You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2007/07/16 08:12:27 UTC

svn commit: r556513 [1/2] - in /harmony/enhanced/classlib/branches/java6: make/ modules/awt/make/ modules/awt/src/main/java/common/java/awt/ modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/ modules/awt/src/test/api/java/common/java/awt/...

Author: pyang
Date: Sun Jul 15 23:12:24 2007
New Revision: 556513

URL: http://svn.apache.org/viewvc?view=rev&rev=556513
Log:
Merge updates from classlib trunk@556012 since r555239

Added:
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/ColorPainter.java
      - copied unchanged from r556012, harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/synth/ColorPainter.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/DefaultStyleFactory.java
      - copied unchanged from r556012, harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/synth/DefaultStyleFactory.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/ImagePainter.java
      - copied unchanged from r556012, harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/synth/ImagePainter.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/PaintersManager.java
      - copied unchanged from r556012, harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/synth/PaintersManager.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/XMLSynthParser.java
      - copied unchanged from r556012, harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/synth/XMLSynthParser.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/XMLSynthStyle.java
      - copied unchanged from r556012, harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/synth/XMLSynthStyle.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/parser/ParserDelegatorTest.java
      - copied unchanged from r556012, harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/text/html/parser/ParserDelegatorTest.java
Modified:
    harmony/enhanced/classlib/branches/java6/make/depends.properties
    harmony/enhanced/classlib/branches/java6/modules/awt/make/exclude.windows.x86_64.drl
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/BorderLayout.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/FontFinder.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextMetricsCalculator.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextRunBreaker.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/BorderLayoutRTest.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/DefaultPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/Encoder.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/XMLEncoder.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/DefaultPersistenceDelegatesFactory.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/ObjectNode.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BooleanPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BytePersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_CharacterPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ClassPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_DoublePersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_FloatPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_IntegerPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_LongPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ShortPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_FieldPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_ProxyPersistenceDelegate.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EncoderTest.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java
    harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.common
    harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.linux.x86.ibm
    harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.windows.x86.ibm
    harmony/enhanced/classlib/branches/java6/modules/luni-kernel/src/main/java/java/lang/System.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/AbstractList.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Collections.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Properties.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/AbstractListTest.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/CollectionsTest.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/PropertiesTest.java
    harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/CharsetProviderImpl.java
    harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/additional/x_windows_949.java
    harmony/enhanced/classlib/branches/java6/modules/swing/make/exclude.common
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/ColorType.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/Region.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthConstants.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthContext.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthGraphicsUtils.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthLookAndFeel.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthStyle.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserDelegator.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/org/apache/harmony/x/swing/internal/nls/messages.properties
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/plaf/synth/SynthStyleTest.java

Modified: harmony/enhanced/classlib/branches/java6/make/depends.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/make/depends.properties?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/make/depends.properties (original)
+++ harmony/enhanced/classlib/branches/java6/make/depends.properties Sun Jul 15 23:12:24 2007
@@ -38,10 +38,10 @@
 junit.url=${maven2.base}/junit/junit/3.8.2/junit-3.8.2.jar
 junit.md5=28e7eb9eeefe31a657c68755bfccc541
 
-bcprov.dir=${depends.jars}/bcprov-jdk15-136
+bcprov.dir=${depends.jars}/bcprov-jdk15-137
 bcprov.jar=${bcprov.dir}/bcprov.jar
-bcprov.url=http://www.bouncycastle.org/download/bcprov-jdk15-136.jar
-bcprov.md5=30c42e406de583a09cbf7124f7dae5ed
+bcprov.url=http://www.bouncycastle.org/download/bcprov-jdk15-137.jar
+bcprov.md5=7cdb436aaa4b222db7fc02495dfcde51
 
 msvcr.dir.x86=${depends.dir}/libs/windows.x86
 msvcr.dll.x86=${msvcr.dir.x86}/msvcr71.dll

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/make/exclude.windows.x86_64.drl
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/make/exclude.windows.x86_64.drl?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/make/exclude.windows.x86_64.drl (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/make/exclude.windows.x86_64.drl Sun Jul 15 23:12:24 2007
@@ -15,3 +15,6 @@
 
 #HARMONY-4181
 java/awt/geom/AreaTest.java
+
+#HARMONY-4307
+org/apache/harmony/awt/ListenerListTest.java

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/BorderLayout.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/BorderLayout.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/BorderLayout.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/BorderLayout.java Sun Jul 15 23:12:24 2007
@@ -32,6 +32,7 @@
 
 import org.apache.harmony.awt.FieldsAccessor;
 import org.apache.harmony.awt.internal.nls.Messages;
+import org.apache.harmony.awt.wtk.NativeWindow;
 
 
 public class BorderLayout implements LayoutManager2, Serializable {
@@ -481,16 +482,21 @@
         int middleY = clientRect.y;
 
         if (visibleComponents[N] != null) {
+            visibleComponents[N].setSize(clientRect.width, 
+                    prefCompSizes[N].height);
             visibleComponents[N].setBounds(clientRect.x, clientRect.y,
-                    clientRect.width, prefCompSizes[N].height);
+                    clientRect.width, prefCompSizes[N].height, 
+                    NativeWindow.BOUNDS_NOSIZE, true);
             middleY += prefCompSizes[N].height + vGap;
         }
         int middleHeight = clientRect.height - prefCompSizes[N].height
                 - prefCompSizes[S].height - vGapOverhead;
         middleHeight = Math.max(middleHeight, 0);
         if (visibleComponents[W] != null) {
+            visibleComponents[W].setSize(prefCompSizes[W].width, middleHeight);
             visibleComponents[W].setBounds(clientRect.x, middleY,
-                    prefCompSizes[W].width, middleHeight);
+                    prefCompSizes[W].width, middleHeight, 
+                    NativeWindow.BOUNDS_NOSIZE, true);
             centerX += prefCompSizes[W].width + hGap;
         }
         int middleWidth = clientRect.width - prefCompSizes[W].width -
@@ -500,14 +506,19 @@
             visibleComponents[C].setBounds(centerX, middleY, middleWidth, middleHeight);
         }
         if (visibleComponents[S] != null) {
+            visibleComponents[S].setSize(clientRect.width, 
+                    prefCompSizes[S].height);
             visibleComponents[S].setBounds(clientRect.x,
                     clientRect.y + clientRect.height - prefCompSizes[S].height,
-                    clientRect.width, prefCompSizes[S].height);
+                    clientRect.width, prefCompSizes[S].height, 
+                    NativeWindow.BOUNDS_NOSIZE, true);
         }
         if (visibleComponents[E] != null) {
+            visibleComponents[E].setSize(prefCompSizes[E].width, middleHeight);
             visibleComponents[E].setBounds(
                     clientRect.x + clientRect.width - prefCompSizes[E].width,
-                    middleY, prefCompSizes[E].width, middleHeight);
+                    middleY, prefCompSizes[E].width, middleHeight, 
+                    NativeWindow.BOUNDS_NOSIZE, true);
         }
     }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/FontFinder.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/FontFinder.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/FontFinder.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/FontFinder.java Sun Jul 15 23:12:24 2007
@@ -103,7 +103,7 @@
      * @param fonts - mapping of the font run starts to the fonts
      */
     static void findFonts(char text[], int runStart, int runLimit, List<Integer> runStarts,
-            Map<Integer, Font> fonts) {
+            Map<Integer, Object> fonts) {
         Font prevFont = null;
         Font currFont;
         for (int i = runStart; i < runLimit; i++) {

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextMetricsCalculator.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextMetricsCalculator.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextMetricsCalculator.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextMetricsCalculator.java Sun Jul 15 23:12:24 2007
@@ -86,7 +86,7 @@
      */
     public void checkBaselines() {
         // Take baseline offsets of the first font and normalize them
-        HashMap<Integer, Font> fonts = breaker.fonts;
+        HashMap<Integer, Object> fonts = breaker.fonts;
 
         Object val = fonts.get(new Integer(0));
 

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextRunBreaker.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextRunBreaker.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextRunBreaker.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/TextRunBreaker.java Sun Jul 15 23:12:24 2007
@@ -53,7 +53,7 @@
 
     byte[] levels;
 
-    HashMap<Integer, Font> fonts;
+    HashMap<Integer, Object> fonts;
     HashMap<Integer, Decoration> decorations;
 
     // Related to default font substitution
@@ -193,7 +193,7 @@
      */
     void createStyleRuns() {
         // TODO - implement fast and simple case
-        fonts = new HashMap<Integer, Font>();
+        fonts = new HashMap<Integer, Object>();
         decorations = new HashMap<Integer, Decoration>();
         ////
 
@@ -221,7 +221,8 @@
             // Find appropriate font or place GraphicAttribute there
 
             // 1. Try to pick up CHAR_REPLACEMENT (compatibility)
-            Font value = (Font)attributes.get(TextAttribute.CHAR_REPLACEMENT);
+            Object value = (GraphicAttribute)
+                    attributes.get(TextAttribute.CHAR_REPLACEMENT);
 
             if (value == null) {
                 // 2. Try to Get FONT

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/BorderLayoutRTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/BorderLayoutRTest.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/BorderLayoutRTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/BorderLayoutRTest.java Sun Jul 15 23:12:24 2007
@@ -110,5 +110,49 @@
         assertEquals(defSize, layout.preferredLayoutSize(emptyContainer));
     }   
     
-    
+    /**
+     * Regression for HARMONY-4085
+     */
+    public final void testHarmony4085() {
+        final Frame f = new Frame();
+        final boolean[] isInvoked = new boolean[4];
+
+        f.add(new Component() {
+            @Override
+            public void setSize(int width, int height) {
+                isInvoked[0] = true;
+                super.setSize(width, height);
+            }
+        }, BorderLayout.EAST);
+        f.add(new Component() {
+            @Override
+            public void setSize(int width, int height) {
+                isInvoked[1] = true;
+                super.setSize(width, height);
+            }
+        }, BorderLayout.WEST);
+        f.add(new Component() {
+            @Override
+            public void setSize(int width, int height) {
+                isInvoked[2] = true;
+                super.setSize(width, height);
+            }
+        }, BorderLayout.NORTH);
+        f.add(new Component() {
+            @Override
+            public void setSize(int width, int height) {
+                isInvoked[3] = true;
+                super.setSize(width, height);
+            }
+        }, BorderLayout.SOUTH);
+
+        f.setSize(100, 100);
+        f.setVisible(true);
+        f.dispose();
+
+        assertTrue(isInvoked[0]);
+        assertTrue(isInvoked[1]);
+        assertTrue(isInvoked[2]);
+        assertTrue(isInvoked[3]);
+    }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/DefaultPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/DefaultPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/DefaultPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/DefaultPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -17,7 +17,6 @@
 
 package java.beans;
 
-import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 import org.apache.harmony.beans.internal.nls.Messages;
@@ -57,8 +56,7 @@
 
         // added for compatibility with RI
         if (out == null) {
-            throw new NullPointerException(
-                    Messages.getString("beans.4C")); //$NON-NLS-1$
+            throw new NullPointerException(Messages.getString("beans.4C")); //$NON-NLS-1$
         }
 
         // added for compatibility with RI
@@ -67,46 +65,83 @@
                     new NullPointerException(Messages.getString("beans.4A"))); //$NON-NLS-1$
             return;
         }
-      
-        try {
-            PropertyDescriptor[] pds = Introspector.getBeanInfo(type)
-                    .getPropertyDescriptors();
 
-            for (PropertyDescriptor pd : pds) {
-                if (!isTransient(pd)) {
-                    Method getter = pd.getReadMethod();
-
-                    if (getter != null) {
-                        Method setter = pd.getWriteMethod();
-
-                        if (setter != null) {
-                            Object oldValue = getter.invoke(oldInstance,
-                                    (Object[]) null);
-                            Object newValue = getter.invoke(newInstance,
-                                    (Object[]) null);
-
-                            if (oldValue != null && !oldValue.equals(newValue)
-                                    || oldValue == null && newValue != null) {
-                                String setterName = setter.getName();
-                                Statement s = new Statement(oldInstance,
-                                        setterName, new Object[] { oldValue });
+        // added for compatibility with RI
+        if (oldInstance == null) {
+            throw new NullPointerException(Messages.getString("beans.4C")); //$NON-NLS-1$
+        }
 
-                                out.writeStatement(s);
+        BeanInfo info = null;
+        try {
+            info = Introspector.getBeanInfo(type);
+        } catch (IntrospectionException e) {
+            out.getExceptionListener().exceptionThrown(e);
+            return;
+        }
+        PropertyDescriptor[] pds = info.getPropertyDescriptors();
+
+        for (PropertyDescriptor pd : pds) {
+            if (!isTransient(pd)) {
+                Method getter = pd.getReadMethod();
+
+                if (getter != null) {
+                    Method setter = pd.getWriteMethod();
+
+                    if (setter != null) {
+                        Expression getterExp = new Expression(oldInstance, pd
+                                .getReadMethod().getName(), null);
+                        try {
+                            // Calculate the old value of the property
+                            Object oldValue = getterExp.getValue();
+
+                            // Write the getter expression to the encoder
+                            out.writeExpression(getterExp);
+
+                            // Get the target value that exists in the new
+                            // environment
+                            Object targetVal = out.get(oldValue);
+
+                            Object newValue = new Expression(newInstance, pd
+                                    .getReadMethod().getName(), null)
+                                    .getValue();
+
+                            /*
+                             * Make the target value and current property value
+                             * equivalent in the new environment
+                             */
+                            if (null == targetVal) {
+                                if (null != newValue) {
+                                    // Set to null
+                                    Statement setterStm = new Statement(
+                                            oldInstance, pd.getWriteMethod()
+                                                    .getName(),
+                                            new Object[] { null });
+                                    out.writeStatement(setterStm);
+                                }
+                            } else {
+                                PersistenceDelegate delegate = out
+                                        .getPersistenceDelegate(targetVal
+                                                .getClass());
+                                if (!delegate.mutatesTo(targetVal, newValue)) {
+                                    Statement setterStm = new Statement(
+                                            oldInstance, pd.getWriteMethod()
+                                                    .getName(),
+                                            new Object[] { oldValue });
+                                    out.writeStatement(setterStm);
+                                }
                             }
-                        } else {
-                            // commented since the process should be
-                            // continued even if no setter is found
-                            // throw new Exception("no setter for " +
-                            // pd.getName() + " property.");
-                            continue;
+                        } catch (Exception ex) {
+                            out.getExceptionListener().exceptionThrown(ex);
                         }
+                    } else {
+                        // commented since the process should be
+                        // continued even if no setter is found
+                        // throw new Exception("no setter for " +
+                        // pd.getName() + " property.");
+                        continue;
                     }
                 }
             }
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            out.getExceptionListener().exceptionThrown(e);
         }
     }
 
@@ -169,7 +204,7 @@
         if (oldInstance != null && constructorPropertyNames != null
                 && constructorPropertyNames.length > 0) {
 
-            //Get explicitly declared equals method.
+            // Get explicitly declared equals method.
             Method equalsMethod = null;
             try {
                 equalsMethod = oldInstance.getClass().getDeclaredMethod(
@@ -180,15 +215,15 @@
             }
 
             if (equalsMethod != null) {
-                    Object result;
-                    try {
-                        result = equalsMethod.invoke(oldInstance,
-                                new Object[] { newInstance });
-                    } catch (Exception e) {
-                        //should not happen here.
-                        throw new Error(e);
-                    }
-                    return ((Boolean) result).booleanValue();
+                Object result;
+                try {
+                    result = equalsMethod.invoke(oldInstance,
+                            new Object[] { newInstance });
+                } catch (Exception e) {
+                    // should not happen here.
+                    throw new Error(e);
+                }
+                return ((Boolean) result).booleanValue();
             }
         }
         return super.mutatesTo(oldInstance, newInstance);

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/Encoder.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/Encoder.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/Encoder.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/Encoder.java Sun Jul 15 23:12:24 2007
@@ -18,33 +18,47 @@
 package java.beans;
 
 import java.util.HashMap;
+import java.util.IdentityHashMap;
 import java.util.Vector;
 
 import org.apache.harmony.beans.DefaultPersistenceDelegatesFactory;
 import org.apache.harmony.beans.NullPersistenceDelegate;
 import org.apache.harmony.beans.ObjectNode;
-import org.apache.harmony.beans.internal.nls.Messages;
 
 public class Encoder {
 
-    private ExceptionListener exceptionListener = null;
+    private ExceptionListener exceptionListener = defaultExListener;
 
-    private final HashMap<Class<?>, PersistenceDelegate> persistenceDelegates = new HashMap<Class<?>, PersistenceDelegate>();
+    private static final ExceptionListener defaultExListener = new DefaultExceptionListener();
+
+    private static class DefaultExceptionListener implements ExceptionListener {
+
+        public void exceptionThrown(Exception exception) {
+            System.err.println("Exception during encoding:" + exception); //$NON-NLS-1$
+            System.err.println("Continue...");
+        }
+
+    }
+
+    private static final HashMap<Class<?>, PersistenceDelegate> persistenceDelegates = new HashMap<Class<?>, PersistenceDelegate>();
 
     Vector<Object> roots = new Vector<Object>();
 
-    HashMap<Object, ObjectNode> nodes = new HashMap<Object, ObjectNode>();
+    IdentityHashMap<Object, ObjectNode> nodes = new IdentityHashMap<Object, ObjectNode>();
+
+    private IdentityHashMap oldNewMap = new IdentityHashMap();
 
     public Encoder() {
         super();
     }
 
     public Object get(Object oldInstance) {
-        if (oldInstance == null) {
-            return null;
+        if (oldInstance == null || oldInstance instanceof String
+                || oldInstance == String.class) {
+            return oldInstance;
         }
 
-        return getValue(nodes.get(oldInstance));
+        return oldNewMap.get(oldInstance);
     }
 
     public Object remove(Object oldInstance) {
@@ -53,7 +67,8 @@
             return null;
         }
 
-        return getValue(nodes.remove(oldInstance));
+        getValue(nodes.remove(oldInstance));
+        return oldNewMap.remove(oldInstance);
     }
 
     public PersistenceDelegate getPersistenceDelegate(Class<?> type) {
@@ -77,6 +92,9 @@
 
     protected void writeObject(Object object) {
         roots.add(object);
+        if (object == null) {
+            return;
+        }
         doWriteObject(object);
     }
 
@@ -90,100 +108,98 @@
         }
 
         pd.writeObject(object, this);
+        if (isString(object.getClass())) {
+            nodes.put(object, new ObjectNode(pd.instantiate(object, this)));
+        }
     }
 
-    public void writeStatement(Statement oldStm) {
-        ObjectNode node = nodes.get(oldStm.getTarget());
+    private Object forceNew(Object old) {
+        if (old == null) {
+            return null;
+        }
+        Object nu = get(old);
+        if (nu != null) {
+            return nu;
+        }
+        writeObject(old);
+        return get(old);
+    }
 
-        if (node != null) {
-            try {
-                Statement statement;
-                Object[] oldArgs = oldStm.getArguments();
+    private Object[] forceNewArray(Object oldArray[]) {
+        if (oldArray == null) {
+            return null;
+        }
+        Object newArray[] = new Object[oldArray.length];
+        for (int i = 0; i < oldArray.length; i++) {
+            newArray[i] = forceNew(oldArray[i]);
+        }
+        return newArray;
+    }
 
-                // FIXME add target processing here
-                write(oldArgs);
-                statement = new Statement(node.getObjectValue(), oldStm
-                        .getMethodName(), oldArgs);
-                statement.execute();
-                node.addStatement(statement);
-            } catch (Exception e) {
-                getExceptionListener().exceptionThrown(e);
-            }
-        } else {
-            // FIXME incompatible with RI, default constructor should be
-            // called instead
-            System.out.println(Messages.getString(
-                    "beans.10", oldStm.getTarget())); //$NON-NLS-1$
+    public void writeStatement(Statement oldStm) {
+        if (oldStm == null) {
+            throw new NullPointerException();
         }
+        try {
+            // FIXME add target processing here
+            Object newTarget = forceNew(oldStm.getTarget());
+            Object newArgs[] = forceNewArray(oldStm.getArguments());
+            Statement statement = new Statement(newTarget, oldStm
+                    .getMethodName(), newArgs);
+            statement.execute();
+        } catch (Exception e) {
+            getExceptionListener().exceptionThrown(e);
+        }
+    }
+
+    private void put(Object old, Object nu) {
+        oldNewMap.put(old, nu);
     }
 
     public void writeExpression(Expression oldExp) {
+        if (oldExp == null) {
+            throw new NullPointerException();
+        }
         try {
             Object oldValue = oldExp.getValue();
-            Object oldTarget = oldExp.getTarget();
-
-            ObjectNode valueNode = null;
-            Class<?> valueType = null;
-
-            // write target
-            if (!Statement.isPDConstructor(oldExp)
-                    && !Statement.isStaticMethodCall(oldExp)) {
-                ObjectNode parent;
-
-                // XXX investigate
-                // write(oldTarget);
-                parent = nodes.get(oldTarget);
-                if (parent != null) {
-                    parent.addExpression(oldExp);
-                }
+            if (oldValue == null || get(oldValue) != null) {
+                return;
             }
 
-            // write value
+            // copy to newExp
+            Object newTarget = forceNew(oldExp.getTarget());
+            Object newArgs[] = forceNewArray(oldExp.getArguments());
+            Expression newExp = new Expression(newTarget, oldExp
+                    .getMethodName(), newArgs);
 
-            if (oldValue != null) {
-                valueType = oldValue.getClass();
-                valueNode = nodes.get(oldValue);
+            // execute newExp
+            Object newValue = null;
+            try {
+                newValue = newExp.getValue();
+            } catch (IndexOutOfBoundsException ex) {
+                // Current Container does not have any component, newVal set
+                // to null
             }
 
-            if (valueNode == null) {
+            // relate oldValue to newValue
+            put(oldValue, newValue);
 
-                if (isNull(valueType) || isPrimitive(valueType)
-                        || isString(valueType)) {
-                    valueNode = new ObjectNode(oldExp);
-                } else {
-                    write(oldExp.getArguments());
-                    valueNode = new ObjectNode(oldExp, nodes);
-                }
-
-                nodes.put(oldValue, valueNode);
-            } else if (oldExp.getMethodName().equals("new")) { //$NON-NLS-1$
-                valueNode.addReference();
-            } else {
-                // XXX the information about referencedExpressions is not
-                // being used by anyone
-                // node.addReferencedExpression(oldExp);
-            }
+            // force same state
+            writeObject(oldValue);
         } catch (Exception e) {
             // TODO - remove written args
-            e.printStackTrace();
             getExceptionListener().exceptionThrown(e);
         }
     }
 
     public void setExceptionListener(ExceptionListener exceptionListener) {
+        if (exceptionListener == null) {
+            exceptionListener = defaultExListener;
+        }
         this.exceptionListener = exceptionListener;
     }
 
     public ExceptionListener getExceptionListener() {
-        if (exceptionListener == null) {
-            exceptionListener = new ExceptionListener() {
-
-                public void exceptionThrown(Exception e) {
-                    System.out.println(e.getClass() + ": " + e.getMessage()); //$NON-NLS-1$
-                }
-            };
-        }
-
         return exceptionListener;
     }
 
@@ -204,7 +220,7 @@
         return node.getObjectValue();
     }
 
-    private Object[] write(Object[] oldInstances) throws Exception {
+    Object[] write(Object[] oldInstances) throws Exception {
         if (oldInstances != null) {
             Object[] newInstances = new Object[oldInstances.length];
 

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -68,9 +68,7 @@
         if (mutatesTo(oldInstance, newInstance)) {
             initialize(oldInstance.getClass(), oldInstance, newInstance, out);
         } else {
-            if (newInstance != null) {
-                out.remove(newInstance);
-            }
+        	out.remove(oldInstance);
 
             out.writeExpression(instantiate(oldInstance, out));
             newInstance = out.get(oldInstance);

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/XMLEncoder.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/XMLEncoder.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/XMLEncoder.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/XMLEncoder.java Sun Jul 15 23:12:24 2007
@@ -53,6 +53,71 @@
     public Object getOwner() {
         return owner;
     }
+    
+    @Override
+    public void writeExpression(Expression oldExp) {
+
+		Object oldValue = null;
+		try {
+			oldValue = oldExp.getValue();
+		} catch (Exception e) {
+			getExceptionListener()
+					.exceptionThrown(
+							new Exception("failed to execute expression: "
+									+ oldExp, e));
+			return;
+		}
+		
+		if (get(oldValue) != null) {
+			return;
+		}
+		
+		Object oldTarget = oldExp.getTarget();
+
+		ObjectNode valueNode = null;
+		Class<?> valueType = null;
+
+		// write target
+		if (!Statement.isPDConstructor(oldExp)
+				&& !Statement.isStaticMethodCall(oldExp)) {
+			ObjectNode parent;
+
+			// XXX investigate
+			// write(oldTarget);
+			parent = nodes.get(oldTarget);
+			if (parent != null) {
+				parent.addExpression(oldExp);
+			}
+		}
+
+		// write value
+		valueType = oldValue.getClass();
+		valueNode = nodes.get(oldValue);
+
+		if (valueNode == null) {
+
+			if (isNull(valueType) || isPrimitive(valueType)
+					|| isString(valueType)) {
+				valueNode = new ObjectNode(oldExp);
+			} else {
+				try {
+					write((Object[])oldExp.getArguments());
+				} catch (Exception e) {
+					getExceptionListener().exceptionThrown(e);
+				}
+				valueNode = new ObjectNode(oldExp, nodes);
+			}
+
+			nodes.put(oldValue, valueNode);
+		} else if (oldExp.getMethodName().equals("new")) { //$NON-NLS-1$
+			valueNode.addReference();
+		} else {
+			// XXX the information about referencedExpressions is not
+			// being used by anyone
+			// node.addReferencedExpression(oldExp);
+		}
+		super.writeExpression(oldExp);
+	}
 
     @Override
     public void writeStatement(Statement oldStm) {
@@ -97,9 +162,9 @@
             if (object != null) {
                 ObjectNode node = nodes.get(object);
 
-                printObjectTag(0, object, node);
+                printObjectTag(1, object, node);
             } else {
-                printNullTag(0);
+                printNullTag(1);
             }
         }
 
@@ -174,7 +239,8 @@
                         tag.addAttr("length", ((Integer) arguments[1]) //$NON-NLS-1$
                                 .toString());
                     } else {
-                        tag.addAttr("class", node.getObjectType().getName()); //$NON-NLS-1$
+                        tag.addAttr("class", ((Class)node.getInitializer().getTarget()).getName()); //$NON-NLS-1$
+                        tag.addAttr("method", node.getInitializer().getMethodName());
                     }
                 } catch (Exception e) {
                     getExceptionListener().exceptionThrown(e);
@@ -389,7 +455,7 @@
             String result = ""; //$NON-NLS-1$
 
             for (int i = 0; i < tabCount; ++i) {
-                result += '\t';
+                result += ' ';
             }
             result = result + s + "\n"; //$NON-NLS-1$
             out.write(result.getBytes("UTF-8")); //$NON-NLS-1$

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java Sun Jul 15 23:12:24 2007
@@ -129,7 +129,7 @@
         /**
          * Delegate to the wrapped <code>BeanContextServices</code>.
          */
-        public Object getService(BeanContextServices bcs, Object requestor,
+        Object getService(BeanContextServices bcs, Object requestor,
                 Class serviceClass, Object serviceSelector,
                 BeanContextServiceRevokedListener listener)
                 throws TooManyListenersException {

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/DefaultPersistenceDelegatesFactory.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/DefaultPersistenceDelegatesFactory.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/DefaultPersistenceDelegatesFactory.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/DefaultPersistenceDelegatesFactory.java Sun Jul 15 23:12:24 2007
@@ -25,7 +25,8 @@
 
 public final class DefaultPersistenceDelegatesFactory {
 
-    private static Map<String, PersistenceDelegate> persistenceDelegates = new HashMap<String, PersistenceDelegate>();
+    private static final DefaultPersistenceDelegate DEFAULT_PERSISTENCE_DELEGATE = new DefaultPersistenceDelegate();
+	private static Map<String, PersistenceDelegate> persistenceDelegates = new HashMap<String, PersistenceDelegate>();
 
     private static PersistenceDelegate createPersistenceDelegate(Class<?> type) {
         if (type == null) {
@@ -53,7 +54,7 @@
             }
 
             if (pd == null) {
-                pd = new DefaultPersistenceDelegate();
+                pd = DEFAULT_PERSISTENCE_DELEGATE;
             }
         }
         return pd;

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/ObjectNode.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/ObjectNode.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/ObjectNode.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/ObjectNode.java Sun Jul 15 23:12:24 2007
@@ -19,7 +19,7 @@
 
 import java.beans.Expression;
 import java.beans.Statement;
-import java.util.HashMap;
+import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Map;
@@ -51,7 +51,7 @@
         this.nodes = null;
     }
 
-    public ObjectNode(Expression initializer, HashMap<Object, ObjectNode> nodes) {
+    public ObjectNode(Expression initializer, IdentityHashMap<Object, ObjectNode> nodes) {
         this.initializer = initializer;
         this.nodes = nodes;
     }

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BooleanPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BooleanPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BooleanPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BooleanPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -27,7 +27,7 @@
     protected Expression instantiate(Object oldInstance, Encoder out) {
         boolean value = ((Boolean) oldInstance).booleanValue();
         return new Expression(oldInstance, Boolean.class, "new", //$NON-NLS-1$
-                new Object[] { Boolean.valueOf(value) });
+                new Object[] { Boolean.valueOf(value).toString() });
     }
 
     @Override

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BytePersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BytePersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BytePersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_BytePersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -26,7 +26,7 @@
     protected Expression instantiate(Object oldInstance, Encoder out) {
         Byte value = (Byte) oldInstance;
         return new Expression(oldInstance, Byte.class, "new", //$NON-NLS-1$
-                new Object[] { value });
+                new Object[] { value.toString() });
     }
 
     @Override

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_CharacterPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_CharacterPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_CharacterPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_CharacterPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -25,9 +25,8 @@
 
     @Override
     protected Expression instantiate(Object oldInstance, Encoder out) {
-        Character value = (Character) oldInstance;
-        return new Expression(oldInstance, Character.class, "new", //$NON-NLS-1$
-                new Object[] { value });
+        return new Expression(oldInstance, oldInstance.toString(),
+                "charAt", new Object[] { new Integer(0) });
     }
 
     @Override

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ClassPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ClassPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ClassPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ClassPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -29,6 +29,13 @@
         Field fld = null;
         final String TYPE = "TYPE"; //$NON-NLS-1$
         Expression result;
+        /*
+         * Special treatment to String.class to prevent endless loop of
+         * instantiation.
+         */
+        if (value == String.class) {
+            return new Expression(value, "", "getClass", null);  //$NON-NLS-1$//$NON-NLS-2$
+        }
         try {
             if (value.equals(Integer.TYPE)) {
                 fld = Integer.class.getField(TYPE);
@@ -56,7 +63,7 @@
             // we have primitive type
             result = new Expression(oldInstance, fld, "get", new Object[] { null }); //$NON-NLS-1$
         } else {
-            result = new Expression(oldInstance, Class.class, "forName", //$NON-NLS-1$ 
+            result = new Expression(oldInstance, String.class, "forName", //$NON-NLS-1$ 
                     new Object[] { value.getName() });
         }
         return result;

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_DoublePersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_DoublePersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_DoublePersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_DoublePersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -25,7 +25,7 @@
     @Override
     protected Expression instantiate(Object oldInstance, Encoder out) {
         Double value = (Double) oldInstance;
-        return new Expression(oldInstance, Double.class, "new", new Object[] { value }); //$NON-NLS-1$
+        return new Expression(oldInstance, Double.class, "new", new Object[] { value.toString() }); //$NON-NLS-1$
     }
 
     @Override

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_FloatPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_FloatPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_FloatPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_FloatPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -25,7 +25,7 @@
     @Override
     protected Expression instantiate(Object oldInstance, Encoder out) {
         Float value = (Float) oldInstance;
-        return new Expression(oldInstance, Float.class, "new", new Object[] { value }); //$NON-NLS-1$
+        return new Expression(oldInstance, Float.class, "new", new Object[] { value.toString() }); //$NON-NLS-1$
     }
 
     @Override

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_IntegerPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_IntegerPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_IntegerPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_IntegerPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -25,10 +25,21 @@
     @Override
     protected Expression instantiate(Object oldInstance, Encoder out) {
         Integer value = (Integer) oldInstance;
-        return new Expression(oldInstance, Integer.class, "new", new Object[] { value }); //$NON-NLS-1$
+        return new Expression(oldInstance, Integer.class,
+				"new", new Object[] { value.toString() }); //$NON-NLS-1$
     }
 
     @Override
     protected void initialize(Class<?> type, Object oldInstance, Object newInstance, Encoder out) {
+    }
+    
+    /*
+     * Two Integer objects are regarded mutatable if they are equal.
+     */
+    protected boolean mutatesTo(Object o1, Object o2) {
+        if (null == o2) {
+            return false;
+        }
+        return o1.equals(o2);
     }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_LongPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_LongPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_LongPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_LongPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -25,7 +25,7 @@
     @Override
     protected Expression instantiate(Object oldInstance, Encoder out) {
         Long value = (Long) oldInstance;
-        return new Expression(oldInstance, Long.class, "new", new Object[] { value }); //$NON-NLS-1$
+        return new Expression(oldInstance, Long.class, "new", new Object[] { value.toString() }); //$NON-NLS-1$
     }
 
     @Override

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ShortPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ShortPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ShortPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_ShortPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -25,7 +25,7 @@
     @Override
     protected Expression instantiate(Object oldInstance, Encoder out) {
         Short value = (Short) oldInstance;
-        return new Expression(oldInstance, Short.class, "new", new Object[] { value }); //$NON-NLS-1$
+        return new Expression(oldInstance, Short.class, "new", new Object[] { value.toString() }); //$NON-NLS-1$
     }
 
     @Override

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_FieldPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_FieldPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_FieldPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_FieldPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -32,7 +32,7 @@
         assert oldInstance instanceof Field : oldInstance;
         Field oldField = (Field) oldInstance;
         Class<?> declClass = oldField.getDeclaringClass();
-        return new Expression(oldField, declClass, "getDeclaredField", //$NON-NLS-1$
+        return new Expression(oldField, declClass, "getField", //$NON-NLS-1$
                 new Object[] { oldField.getName() });
     }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_ProxyPersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_ProxyPersistenceDelegate.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_ProxyPersistenceDelegate.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/org/apache/harmony/beans/java_lang_reflect_ProxyPersistenceDelegate.java Sun Jul 15 23:12:24 2007
@@ -17,13 +17,13 @@
 
 package org.apache.harmony.beans;
 
+import java.beans.DefaultPersistenceDelegate;
 import java.beans.Encoder;
 import java.beans.Expression;
-import java.beans.PersistenceDelegate;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Proxy;
 
-public class java_lang_reflect_ProxyPersistenceDelegate extends PersistenceDelegate {
+public class java_lang_reflect_ProxyPersistenceDelegate extends DefaultPersistenceDelegate {
     @Override
     protected Expression instantiate(Object oldInstance, Encoder out) {
         assert oldInstance instanceof Proxy : oldInstance;
@@ -39,11 +39,13 @@
         assert oldInstance instanceof Proxy : oldInstance;
         assert newInstance instanceof Proxy : newInstance;
         assert newInstance == oldInstance;
+        super.initialize(type, oldInstance, newInstance, out);
     }
 
     @Override
     protected boolean mutatesTo(Object oldInstance, Object newInstance) {
         assert oldInstance instanceof Proxy : oldInstance;
-        return oldInstance == newInstance;
+        assert oldInstance == newInstance;
+        return super.mutatesTo(oldInstance, newInstance);
     }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EncoderTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EncoderTest.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EncoderTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EncoderTest.java Sun Jul 15 23:12:24 2007
@@ -381,7 +381,7 @@
         Encoder enc = new Encoder();
         PersistenceDelegate pd = enc
                 .getPersistenceDelegate(MockFooLiYang.class);
-        assertTrue(pd instanceof VerbosePD);
+        assertTrue(pd instanceof DefaultPersistenceDelegate);
     }
 
     public void testGetPersistenceDelegate_Default() {

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java Sun Jul 15 23:12:24 2007
@@ -30,7 +30,14 @@
 import org.apache.harmony.beans.tests.support.mock.MockFoo;
 import org.apache.harmony.beans.tests.support.mock.MockFooStop;
 
-
+import java.beans.XMLEncoder;
+import java.beans.XMLDecoder;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
 /**
  * Test java.beans.PersistenceDelegate
  */
@@ -206,7 +213,45 @@
         assertFalse(pd.mutatesTo(null, "test"));
     }
 
-    
+    public void test_writeObject_Null_LXMLEncoder() throws Exception{
+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+        XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(byteArrayOutputStream));
+        encoder.writeObject(null);
+        encoder.close();
+
+        DataInputStream stream = new DataInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
+        XMLDecoder decoder = new XMLDecoder(stream);
+        assertNull(decoder.readObject());
+        stream = new DataInputStream(PersistenceDelegateTest.class.getResourceAsStream("/xml/null.xml"));
+        decoder = new XMLDecoder(stream);
+        assertNull(decoder.readObject());
+    }
+
+    class Bar {
+        public int value;
+        public void barTalk() {
+            System.out.println("Bar is coming!");
+        }
+    }
+    public void test_writeObject_java_lang_reflect_Field()
+			throws SecurityException, NoSuchFieldException, IOException {
+		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+		XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(
+				byteArrayOutputStream));
+		Field value = Bar.class.getField("value");
+		encoder.writeObject(value);
+		encoder.close();
+
+		DataInputStream stream = new DataInputStream(new ByteArrayInputStream(
+				byteArrayOutputStream.toByteArray()));
+		
+		XMLDecoder decoder = new XMLDecoder(stream); Field field = (Field)
+		decoder.readObject();
+
+        assertEquals(value, field);
+		assertEquals(value.getName(), field.getName());
+	}
+
     // <--
 
     private void assertWasAdded(Class<?> targetClass, String methodName,

Modified: harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.common
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.common?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.common (original)
+++ harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.common Sun Jul 15 23:12:24 2007
@@ -1,26 +1 @@
-org/apache/harmony/lang/management/ClassLoadingMXBeanImplTest.java
-org/apache/harmony/lang/management/CompilationMXBeanImplTest.java
-org/apache/harmony/lang/management/DynamicMXBeanImplTest.java
-org/apache/harmony/lang/management/GarbageCollectorMXBeanImplTest.java
-org/apache/harmony/lang/management/LoggingMXBeanImplTest.java
-org/apache/harmony/lang/management/MemoryManagerImplTest.java
-org/apache/harmony/lang/management/MemoryMXBeanImplTest.java
-org/apache/harmony/lang/management/MemoryPoolMXBeanImplTest.java
-org/apache/harmony/lang/management/MultiInstanceDynamicMXBeanImplTest.java
-org/apache/harmony/lang/management/RuntimeMXBeanImplTest.java
-org/apache/harmony/lang/management/SingleInstanceDynamicMXBeanImplTest.java
-org/apache/harmony/lang/management/ThreadInfoTest.java
-org/apache/harmony/lang/management/ThreadMXBeanImplTest.java
-
-org/apache/harmony/lang/management/tests/java/lang/management/ClassLoadingMXBeanTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/CompilationMXBeanTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/GarbageCollectorMXBeanTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/LoggingMXBeanTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/ManagementFactoryTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/MemoryManagerMXBeanTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/MemoryMXBeanTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/MemoryPoolMXBeanTest.java
-org/apache/harmony/lang/management/tests/java/lang/management/RuntimeMXBeanTest.java
 org/apache/harmony/lang/management/tests/java/lang/management/ThreadMXBeanTest.java
-
-tests/java/util/logging/LoggingMXBeanTest.java

Modified: harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.linux.x86.ibm
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.linux.x86.ibm?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.linux.x86.ibm (original)
+++ harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.linux.x86.ibm Sun Jul 15 23:12:24 2007
@@ -0,0 +1,26 @@
+org/apache/harmony/lang/management/ClassLoadingMXBeanImplTest.java
+org/apache/harmony/lang/management/CompilationMXBeanImplTest.java
+org/apache/harmony/lang/management/DynamicMXBeanImplTest.java
+org/apache/harmony/lang/management/GarbageCollectorMXBeanImplTest.java
+org/apache/harmony/lang/management/LoggingMXBeanImplTest.java
+org/apache/harmony/lang/management/MemoryManagerImplTest.java
+org/apache/harmony/lang/management/MemoryMXBeanImplTest.java
+org/apache/harmony/lang/management/MemoryPoolMXBeanImplTest.java
+org/apache/harmony/lang/management/MultiInstanceDynamicMXBeanImplTest.java
+org/apache/harmony/lang/management/RuntimeMXBeanImplTest.java
+org/apache/harmony/lang/management/SingleInstanceDynamicMXBeanImplTest.java
+org/apache/harmony/lang/management/ThreadInfoTest.java
+org/apache/harmony/lang/management/ThreadMXBeanImplTest.java
+
+org/apache/harmony/lang/management/tests/java/lang/management/ClassLoadingMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/CompilationMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/GarbageCollectorMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/LoggingMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/ManagementFactoryTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/MemoryManagerMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/MemoryMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/MemoryPoolMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/RuntimeMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/ThreadMXBeanTest.java
+
+tests/java/util/logging/LoggingMXBeanTest.java

Modified: harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.windows.x86.ibm
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.windows.x86.ibm?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.windows.x86.ibm (original)
+++ harmony/enhanced/classlib/branches/java6/modules/lang-management/make/exclude.windows.x86.ibm Sun Jul 15 23:12:24 2007
@@ -0,0 +1,27 @@
+org/apache/harmony/lang/management/ClassLoadingMXBeanImplTest.java
+org/apache/harmony/lang/management/CompilationMXBeanImplTest.java
+org/apache/harmony/lang/management/DynamicMXBeanImplTest.java
+org/apache/harmony/lang/management/GarbageCollectorMXBeanImplTest.java
+org/apache/harmony/lang/management/LoggingMXBeanImplTest.java
+org/apache/harmony/lang/management/MemoryManagerImplTest.java
+org/apache/harmony/lang/management/MemoryMXBeanImplTest.java
+org/apache/harmony/lang/management/MemoryPoolMXBeanImplTest.java
+org/apache/harmony/lang/management/MultiInstanceDynamicMXBeanImplTest.java
+org/apache/harmony/lang/management/RuntimeMXBeanImplTest.java
+org/apache/harmony/lang/management/SingleInstanceDynamicMXBeanImplTest.java
+org/apache/harmony/lang/management/ThreadInfoTest.java
+org/apache/harmony/lang/management/ThreadMXBeanImplTest.java
+
+org/apache/harmony/lang/management/tests/java/lang/management/ClassLoadingMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/CompilationMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/GarbageCollectorMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/LoggingMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/ManagementFactoryTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/MemoryManagerMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/MemoryMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/MemoryPoolMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/RuntimeMXBeanTest.java
+org/apache/harmony/lang/management/tests/java/lang/management/ThreadMXBeanTest.java
+
+tests/java/util/logging/LoggingMXBeanTest.java
+

Modified: harmony/enhanced/classlib/branches/java6/modules/luni-kernel/src/main/java/java/lang/System.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni-kernel/src/main/java/java/lang/System.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni-kernel/src/main/java/java/lang/System.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni-kernel/src/main/java/java/lang/System.java Sun Jul 15 23:12:24 2007
@@ -490,8 +490,8 @@
 
         systemProperties.put("file.encoding", fileEncoding);
 
-        systemProperties.put("java.version", "1.4.2 subset");
-        systemProperties.put("java.specification.version", "1.4");
+        systemProperties.put("java.version", "1.5 subset");
+        systemProperties.put("java.specification.version", "1.5");
 
         systemProperties.put("java.specification.vendor", "Sun Microsystems Inc.");
         systemProperties.put("java.specification.name", "Java Platform API Specification");

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/AbstractList.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/AbstractList.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/AbstractList.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/AbstractList.java Sun Jul 15 23:12:24 2007
@@ -62,13 +62,14 @@
         public void remove() {
             if (expectedModCount == modCount) {
                 try {
-                    AbstractList.this.remove(lastPosition);
-                } catch (IndexOutOfBoundsException e) {
-                    throw new IllegalStateException();
-                }
-                if (modCount != expectedModCount) {
-                    expectedModCount++;
-                }
+					AbstractList.this.remove(lastPosition);
+				} catch (IndexOutOfBoundsException e) {
+					throw new IllegalStateException();
+				} finally {
+					if (modCount != expectedModCount) {
+						expectedModCount++;
+					}
+				}
                 if (pos == lastPosition) {
                     pos--;
                 }

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Collections.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Collections.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Collections.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Collections.java Sun Jul 15 23:12:24 2007
@@ -1473,12 +1473,12 @@
             return -1;
         }
 
-        Comparable<T> key = (Comparable<T>) object;
+               
         if (!(list instanceof RandomAccess)) {
-            ListIterator<T> it = (ListIterator<T>) list.listIterator();
+            ListIterator<? extends Comparable<? super T>> it = list.listIterator();
             while (it.hasNext()) {
                 int result;
-                if ((result = key.compareTo(it.next())) <= 0) {
+                if ((result = -it.next().compareTo(object)) <= 0) {    
                     if (result == 0) {
                         return it.previousIndex();
                     }
@@ -1491,7 +1491,7 @@
         int low = 0, mid = list.size(), high = mid - 1, result = -1;
         while (low <= high) {
             mid = (low + high) >> 1;
-            if ((result = key.compareTo((T) list.get(mid))) > 0) {
+            if ((result = -list.get(mid).compareTo(object)) > 0) {
                 low = mid + 1;
             } else if (result == 0) {
                 return mid;
@@ -1531,7 +1531,7 @@
             ListIterator<? extends T> it = list.listIterator();
             while (it.hasNext()) {
                 int result;
-                if ((result = comparator.compare(object, it.next())) <= 0) {
+                if ((result = -comparator.compare(it.next(), object)) <= 0) {
                     if (result == 0) {
                         return it.previousIndex();
                     }
@@ -1544,7 +1544,7 @@
         int low = 0, mid = list.size(), high = mid - 1, result = -1;
         while (low <= high) {
             mid = (low + high) >> 1;
-            if ((result = comparator.compare(object, list.get(mid))) > 0) {
+            if ((result = -comparator.compare(list.get(mid),object)) > 0) {
                 low = mid + 1;
             } else if (result == 0) {
                 return mid;

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Properties.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Properties.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Properties.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Properties.java Sun Jul 15 23:12:24 2007
@@ -407,6 +407,9 @@
 			}
 			buf[offset++] = nextChar;
 		}
+        if(keyLength==-1 && offset>0){
+            keyLength = offset;
+        }
 		if (keyLength >= 0) {
 			String temp = new String(buf, 0, offset);
 			put(temp.substring(0, keyLength), temp.substring(keyLength));

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/AbstractListTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/AbstractListTest.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/AbstractListTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/AbstractListTest.java Sun Jul 15 23:12:24 2007
@@ -20,10 +20,12 @@
 import java.util.AbstractList;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.ConcurrentModificationException;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.NoSuchElementException;
 import java.util.RandomAccess;
 
 public class AbstractListTest extends junit.framework.TestCase {
@@ -195,6 +197,75 @@
             // expected
         }
     }
+
+    class MockArrayList<E> extends AbstractList<E> {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	
+    	ArrayList<E> list = new ArrayList<E>();
+    	
+    	public E remove(int idx) {
+    		modCount++;
+    		return list.remove(idx);
+    	}
+
+    	@Override
+    	public E get(int index) {
+    		return list.get(index);
+    	}
+
+    	@Override
+    	public int size() {
+    		return list.size();
+    	}
+    	
+    	public void add(int idx, E o) {
+    		modCount++;
+    		list.add(idx, o);
+    	}
+    }
+    
+    /*
+     * Regression test for HY-4398
+     */
+    public void test_iterator_next() {
+		MockArrayList<String> t = new MockArrayList<String>();
+		t.list.add("a");
+		t.list.add("b");
+		
+		Iterator it = t.iterator();
+		
+		while (it.hasNext()) {
+			it.next();
+		}
+		try {
+            it.next();
+            fail("Should throw NoSuchElementException");
+        } catch (NoSuchElementException cme) {
+            // expected
+        }
+
+        t.add("c");
+        try {
+            it.remove();
+            fail("Should throw NoSuchElementException");
+        } catch (ConcurrentModificationException cme) {
+            // expected
+		}
+		
+		it = t.iterator();
+		try {
+			it.remove();
+			fail("Should throw IllegalStateException");
+		} catch (IllegalStateException ise) {
+			// expected
+		}
+
+		Object value = it.next();
+		assertEquals("a", value);
+	}
 
     /**
      * @tests java.util.AbstractList#subList(int, int)

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/CollectionsTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/CollectionsTest.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/CollectionsTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/CollectionsTest.java Sun Jul 15 23:12:24 2007
@@ -1919,6 +1919,70 @@
    			assertEquals(errMsg, e.getCause().getMessage());
    		}
     }
+    
+    public void test_binarySearch_asymmetry_with_comparator() throws Exception{
+        List list = new ArrayList();
+        String s1 = new String("a");
+        String s2 = new String("aa");
+        String s3 = new String("aaa");        
+        list.add(s1);
+        list.add(s2);
+        list.add(s3);
+        Collections.sort(list);
+        Object o = Collections.binarySearch(list, 1, new StringComparator());
+        assertSame(0,o);
+    }
+    
+    public void test_binarySearch_asymmetry() throws Exception{
+        List list = new LinkedList();
+        String s1 = new String("a");
+        String s2 = new String("aa");
+        String s3 = new String("aaa");        
+        list.add(new MyComparable(s1));
+        list.add(new MyComparable(s2));
+        list.add(new MyComparable(s3));
+        Collections.sort(list);
+        Object o = Collections.binarySearch(list, 1);
+        assertSame(0,o);
+    }
+    
+    
+    private class MyComparable implements Comparable {
+
+        public String s;
+
+        public MyComparable(String s) {
+            this.s = s;
+
+        }
+
+        public int compareTo(Object another) {
+            int length = 0;
+            if (another instanceof MyComparable) {
+                length = (((MyComparable) another).s).length();
+            } else {
+                length = (Integer) another;
+            }
+            return s.length() - length;
+        }
+
+    }
+    
+    private class StringComparator implements Comparator {
+
+        public int compare(Object object1, Object object2) {
+            String s = (String) object1;
+            int length;
+            if(object2 instanceof String){
+                length = ((String)object2).length();
+            }
+            else
+            {
+                length = (Integer) object2;
+            }            
+            return s.length() - length;
+        }
+    }
 
 
     /**

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/PropertiesTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/PropertiesTest.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/PropertiesTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/PropertiesTest.java Sun Jul 15 23:12:24 2007
@@ -690,6 +690,17 @@
                     .getProperty(nextKey).equals(myProps.getProperty(nextKey)));
         }
     }
+ 
+    /**
+     * if loading from single line like "hello" without "\n\r" neither "=", it should be same 
+     * as loading from "hello="
+     */
+    public void testLoadSingleLine() throws Exception{
+        Properties props = new Properties();
+        InputStream sr = new ByteArrayInputStream("hello".getBytes());
+        props.load(sr);
+        assertEquals(1, props.size());
+    }
 
     /**
      * Sets up the fixture, for example, open a network connection. This method

Modified: harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/CharsetProviderImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/CharsetProviderImpl.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/CharsetProviderImpl.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/CharsetProviderImpl.java Sun Jul 15 23:12:24 2007
@@ -624,8 +624,7 @@
                                                             "x-MS950-HKSCS",
                                                             "MS950_HKSCS" } },
 
-            { "additional.x_windows_949",         null, new String[] { "KSC_5601",
-                                                            "x-windows-949",
+            { "additional.x_windows_949",         null, new String[] { "x-windows-949",
                                                             "MS949" } },
 
             { "additional.GB18030",                null, new String[] { "GB18030",

Modified: harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/additional/x_windows_949.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/additional/x_windows_949.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/additional/x_windows_949.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/additional/x_windows_949.java Sun Jul 15 23:12:24 2007
@@ -32,7 +32,7 @@
         }
 
         public boolean contains(Charset cs) {
-            return cs.name().equalsIgnoreCase("IBM367") || cs.name().equalsIgnoreCase("US-ASCII") ;
+            return cs.name().equalsIgnoreCase("x-windows-949") || cs.name().equalsIgnoreCase("IBM367") || cs.name().equalsIgnoreCase("US-ASCII") ;
         }
 
         public CharsetDecoder newDecoder() {

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/make/exclude.common
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/make/exclude.common?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/make/exclude.common (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/make/exclude.common Sun Jul 15 23:12:24 2007
@@ -138,3 +138,9 @@
 javax/swing/text/html/parser/DTD401Test.java
 javax/swing/text/html/parser/DTDTest.java
 javax/swing/text/html/parser/TagElementTest.java
+
+# see HARMONY-4462
+javax/swing/text/html/FormView_FormSelectElementTest.java
+
+#H-4008
+javax/swing/text/html/FormView_FormInputElementTest.java

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/ColorType.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/ColorType.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/ColorType.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/ColorType.java Sun Jul 15 23:12:24 2007
@@ -80,6 +80,10 @@
      */
     static ColorType calculateColorType(String key) {
 
+        if (key == null) {
+            return null;
+        }
+
         key = key.toUpperCase().intern();
 
         if (key == "BACKGROUND") { //$NON-NLS-1$
@@ -93,7 +97,6 @@
         } else if (key == "FOCUS") { //$NON-NLS-1$
             return FOCUS;
         }
-
         throw new IllegalStateException(Messages.getString("swing.err.1C") //$NON-NLS-1$
                 + key);
     }

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/Region.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/Region.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/Region.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/Region.java Sun Jul 15 23:12:24 2007
@@ -210,9 +210,10 @@
      */
     static Region getRegionFromUIID(String ui) {
 
+        // Possible improvement:
         // This method creates additional object(substring) but possibly faster
         // way is the creating two HashMaps that contains the same values but
-        // the different keys: ui and name
+        // the different keys: UI and name
         return regionsMap.get(ui.substring(0, (ui.length() - 2)));
     }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthConstants.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthConstants.java?view=diff&rev=556513&r1=556512&r2=556513
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthConstants.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/synth/SynthConstants.java Sun Jul 15 23:12:24 2007
@@ -24,7 +24,7 @@
  */
 public interface SynthConstants {
 
-    /** The component (usual a button) is marked as default (additional) */
+    /** The component (a JButton) is marked as default (additional) */
     static int DEFAULT = 1024;
 
     /** The component is disabled (primary) */