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/08/27 12:44:05 UTC

svn commit: r570061 [2/2] - in /harmony/enhanced/classlib/branches/java6: depends/build/ make/ modules/archive/src/main/java/java/util/zip/ modules/auth/src/test/java/common/org/ietf/jgss/ modules/awt/src/main/java/common/java/awt/geom/ modules/awt/src...

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/org/apache/harmony/nio/internal/SelectorImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/org/apache/harmony/nio/internal/SelectorImpl.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/org/apache/harmony/nio/internal/SelectorImpl.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/org/apache/harmony/nio/internal/SelectorImpl.java Mon Aug 27 03:43:59 2007
@@ -85,10 +85,6 @@
 
     private SelectionKey[] writableChannels;
 
-    private List<FileDescriptor> readableFDs = new ArrayList<FileDescriptor>();
-
-    private List<FileDescriptor> writableFDs = new ArrayList<FileDescriptor>();
-
     private FileDescriptor[] readable;
 
     private FileDescriptor[] writable;
@@ -110,11 +106,17 @@
      * @see java.nio.channels.spi.AbstractSelector#implCloseSelector()
      */
     protected void implCloseSelector() throws IOException {
-        doCancel();
-        for (SelectionKey sk : keys) {
-            deregister((AbstractSelectionKey) sk);
+        synchronized (this) {
+            synchronized (keys) {
+                synchronized (selectedKeys) {
+                    doCancel();
+                    for (SelectionKey sk : keys) {
+                        deregister((AbstractSelectionKey) sk);
+                    }
+                    wakeup();
+                }
+            }
         }
-        wakeup();
     }
 
     /*
@@ -189,9 +191,6 @@
                         }
                         readyChannels = Platform.getNetworkSystem().select(readable, writable, timeout);
                     } finally {
-                        // clear results for next select
-                        readableFDs.clear();
-                        writableFDs.clear();                        
                         if (isBlock) {
                             end();
                         }
@@ -212,13 +211,20 @@
 
     // Prepares and adds channels to list for selection
     private void prepareChannels() {
-        readableFDs.add(sourcefd);        
-        List<SelectionKey> readChannelList = new ArrayList<SelectionKey>();
+        int sizeGuess = keys.size();
+        List<SelectionKey> readChannelList = new ArrayList<SelectionKey>(sizeGuess + 1);
+        List<FileDescriptor> readableFDs = new ArrayList<FileDescriptor>(sizeGuess + 1);
+
+        List<SelectionKey> writeChannelList = new ArrayList<SelectionKey>(sizeGuess);
+        List<FileDescriptor> writableFDs = new ArrayList<FileDescriptor>(sizeGuess);
+
+        // Always add in the "wake-up" channel 
         readChannelList.add(source.keyFor(this));
-        List<SelectionKey> writeChannelList = new ArrayList<SelectionKey>();
+        readableFDs.add(sourcefd);
+
         synchronized (keysLock) {
-            for (Iterator<SelectionKey> i = keys.iterator(); i.hasNext();) {
-                SelectionKeyImpl key = (SelectionKeyImpl) i.next();
+            for (SelectionKey skey : keys) {
+                SelectionKeyImpl key = (SelectionKeyImpl) skey;
                 key.oldInterestOps = key.interestOps();
                 boolean isReadableChannel = ((SelectionKey.OP_ACCEPT | SelectionKey.OP_READ) & key.oldInterestOps) != 0;
                 boolean isWritableChannel = ((SelectionKey.OP_CONNECT | SelectionKey.OP_WRITE) & key.oldInterestOps) != 0;
@@ -233,14 +239,18 @@
                 }
             }
         }
-        readableChannels = readChannelList.toArray(new SelectionKey[0]);
-        writableChannels = writeChannelList.toArray(new SelectionKey[0]);
-        readable = readableFDs.toArray(new FileDescriptor[0]);
-        writable = writableFDs.toArray(new FileDescriptor[0]);
+        readableChannels = readChannelList.toArray(new SelectionKey[readChannelList.size()]);
+        writableChannels = writeChannelList.toArray(new SelectionKey[writeChannelList.size()]);
+        readable = readableFDs.toArray(new FileDescriptor[readableFDs.size()]);
+        writable = writableFDs.toArray(new FileDescriptor[writableFDs.size()]);
     }
 
-    // Analyses selected channels and adds keys of ready channels to
-    // selectedKeys list
+    /* Analyses selected channels and adds keys of ready channels to
+     * selectedKeys list.
+     * 
+     * readyChannels are encoded as concatenated array of flags for
+     * readable channels followed by writable channels. 
+     */
     private int processSelectResult(int[] readyChannels) throws IOException {
         if (0 == readyChannels.length) {
             return 0;

Modified: harmony/enhanced/classlib/branches/java6/modules/sql/build.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/sql/build.xml?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/sql/build.xml (original)
+++ harmony/enhanced/classlib/branches/java6/modules/sql/build.xml Mon Aug 27 03:43:59 2007
@@ -167,6 +167,7 @@
                 <pathelement path="${hy.sql.bin.test}"/>
                 <pathelement path="${hy.sql.src.test.resources}"/>
                 <pathelement path="${hy.hdk}/build/test/support.jar"/>
+                <pathelement path="${hy.hdk}/build/test/derby.jar"/>
             </classpath>
             <classpath location="../../build/tests" />
 

Copied: harmony/enhanced/classlib/branches/java6/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java (from r569416, harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java)
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java?p2=harmony/enhanced/classlib/branches/java6/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java&p1=harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java&r1=569416&r2=570061&rev=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java Mon Aug 27 03:43:59 2007
@@ -19,27 +19,12 @@
 import java.io.InputStream;
 import java.io.Reader;
 import java.math.BigDecimal;
-import java.sql.Array;
-import java.sql.Blob;
-import java.sql.Clob;
-import java.sql.Connection;
-import java.sql.Date;
-import java.sql.Ref;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.sql.Savepoint;
-import java.sql.Statement;
-import java.sql.Time;
-import java.sql.Timestamp;
+import java.sql.*;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Map;
 
-import javax.sql.RowSet;
-import javax.sql.RowSetEvent;
-import javax.sql.RowSetMetaData;
+import javax.sql.*;
 import javax.sql.rowset.BaseRowSet;
 import javax.sql.rowset.CachedRowSet;
 import javax.sql.rowset.RowSetWarning;
@@ -979,6 +964,206 @@
     public void execute() throws SQLException {
         throw new NotImplementedException();
 
+    }
+
+    public void updateNCharacterStream(String columnLabel, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNCharacterStream(int columnIndex, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNCharacterStream(String columnLabel, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNCharacterStream(int columnIndex, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateCharacterStream(String columnLabel, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateCharacterStream(int columnIndex, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateCharacterStream(String columnLabel, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateCharacterStream(int columnIndex, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBinaryStream(String columnLabel, InputStream stream){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBinaryStream(int columnIndex, InputStream stream){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBinaryStream(String columnLabel, InputStream stream, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBinaryStream(int columnIndex, InputStream stream, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateRowId(String columnLabel, RowId x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateRowId(int columnIndex, RowId x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNClob(String columnLabel, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNClob(int columnIndex, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNClob(String columnLabel, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNClob(int columnIndex, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNClob(String columnLabel, NClob nClob){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNClob(int columnIndex, NClob nClob){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNString(String columnLabel, String nString){
+        throw new NotImplementedException();
+    }
+    
+    public void updateNString(int columnIndex, String nString){
+        throw new NotImplementedException();
+    }
+    
+    public void updateAsciiStream(String columnLabel, InputStream stream){
+        throw new NotImplementedException();
+    }
+    
+    public void updateAsciiStream(int columnIndex, InputStream stream){
+        throw new NotImplementedException();
+    }
+    
+    public void updateAsciiStream(String columnLabel, InputStream stream, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateAsciiStream(int columnIndex, InputStream stream, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateSQLXML(String columnLabel, SQLXML xmlObject){
+        throw new NotImplementedException();
+    }
+    
+    public void updateSQLXML(int columnIndex, SQLXML xmlObject){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBlob(String columnLabel, InputStream stream){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBlob(int columnIndex, InputStream stream){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBlob(String columnLabel, InputStream stream, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateBlob(int columnIndex, InputStream stream, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateClob(String columnLabel, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateClob(int columnIndex, Reader reader){
+        throw new NotImplementedException();
+    }
+    
+    public void updateClob(String columnLabel, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public void updateClob(int columnIndex, Reader reader, long x){
+        throw new NotImplementedException();
+    }
+    
+    public String getNString(int columnIndex){
+        throw new NotImplementedException();
+    }
+    
+    public String getNString(String columnLabel){
+        throw new NotImplementedException();
+    }
+    
+    public RowId getRowId(int columnIndex){
+        throw new NotImplementedException();
+    }
+    
+    public RowId getRowId(String columnLabel){
+        throw new NotImplementedException();
+    }
+    
+    public boolean isWrapperFor(Class<?> iface){
+        throw new NotImplementedException();
+    }
+    
+    public Reader getNCharacterStream(int columnIndex){
+        throw new NotImplementedException();
+    }
+    
+    public Reader getNCharacterStream(String columnLabel){
+        throw new NotImplementedException();
+    }
+    
+    public NClob getNClob(int columnIndex){
+        throw new NotImplementedException();
+    }
+    
+    public NClob getNClob(String columnLabel){
+        throw new NotImplementedException();
+    }
+    
+    public boolean isClosed(){
+        throw new NotImplementedException();
+    }
+    
+    public SQLXML getSQLXML(int columnIndex){
+        throw new NotImplementedException();
+    }
+    
+    public SQLXML getSQLXML(String columnLabel){
+        throw new NotImplementedException();
+    }
+    
+    public <T> T unwrap(Class<T> iface){
+        throw new NotImplementedException();
+    }
+    
+    public int getHoldability(){
+        throw new NotImplementedException();
     }
 
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java Mon Aug 27 03:43:59 2007
@@ -54,7 +54,7 @@
 
     static final String INVALIDDRIVER1 = "abc.klm.Foo";
 
-    static String[] driverNames = { DRIVER1, DRIVER2 };
+    static String[] driverNames = { DRIVER1, DRIVER2, DRIVER4, DRIVER5 };
 
     static int numberLoaded;
 
@@ -303,16 +303,18 @@
             Driver validDriver = DriverManager.getDriver(element);
             assertNotNull(validDriver);
         } // end for
-
-        for (String element : invalidURLs) {
-            try {
-                DriverManager.getDriver(element);
-                fail("Should throw SQLException");
-            } catch (SQLException e) {
-                assertEquals("08001", e.getSQLState());
-                assertEquals(exceptionMsg1, e.getMessage());
-            } // end try
-        } // end for
+        
+//      Comment out since it depends on the drivers providered
+//        for (String element : invalidURLs) {
+//            System.out.println(element);
+//            try {
+//                DriverManager.getDriver(element);
+//                fail("Should throw SQLException");
+//            } catch (SQLException e) {
+//                assertEquals("08001", e.getSQLState());
+//                assertEquals(exceptionMsg1, e.getMessage());
+//            } // end try
+//        } // end for
 
     } // end method testGetDriver()
 
@@ -327,8 +329,9 @@
         } // end while
 
         // Check that all the drivers are in the list...
-        assertEquals("testGetDrivers: Don't see all the loaded drivers - ", i,
-                numberLoaded);
+        // There might be other drivers loaded in other classes
+        assertTrue("testGetDrivers: Don't see all the loaded drivers - ",
+                i >= numberLoaded);
     } // end method testGetDrivers()
 
     static int timeout1 = 25;
@@ -518,10 +521,6 @@
          * ClassLoader.
          */
         int numberLoaded = 0;
-        String theSystemDrivers = DRIVER4 + ":" + DRIVER5 + ":"
-                + INVALIDDRIVER1;
-        System.setProperty(JDBC_PROPERTY, theSystemDrivers);
-        numberLoaded += 2;
 
         for (String element : driverNames) {
             try {

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/JOptionPane.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/JOptionPane.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/JOptionPane.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/JOptionPane.java Mon Aug 27 03:43:59 2007
@@ -456,7 +456,6 @@
         Object oldValue = message;
         message = newMessage;
         firePropertyChange(MESSAGE_PROPERTY, oldValue, newMessage);
-		updateUI();
     }
 
     public Object getMessage() {
@@ -467,7 +466,6 @@
         Icon oldValue = icon;
         icon = newIcon;
         firePropertyChange(ICON_PROPERTY, oldValue, newIcon);
-		updateUI();
     }
 
     public Icon getIcon() {
@@ -478,7 +476,6 @@
         Object oldValue = value;
         value = newValue;
         firePropertyChange(VALUE_PROPERTY, oldValue, newValue);
-		updateUI();
     }
 
     public Object getValue() {
@@ -489,7 +486,6 @@
         Object[] oldValue = options;
         options = newOptions;
         firePropertyChange(OPTIONS_PROPERTY, oldValue, newOptions);
-		updateUI();
     }
 
     public Object[] getOptions() {
@@ -500,7 +496,6 @@
         Object oldValue = initialValue;
         initialValue = newValue;
         firePropertyChange(INITIAL_VALUE_PROPERTY, oldValue, newValue);
-		updateUI();
     }
 
     public Object getInitialValue() {
@@ -524,7 +519,6 @@
                     "JOptionPane.WARNING_MESSAGE, JOptionPane.QUESTION_MESSAGE " + //$NON-NLS-1$
                     "or JOptionPane.PLAIN_MESSAGE"); //$NON-NLS-1$
         }
-		updateUI();
     }
 
     public int getMessageType() {
@@ -544,7 +538,6 @@
         default:
             throw new RuntimeException(Messages.getString("swing.20")); //$NON-NLS-1$
         }
-		updateUI();
     }
 
     public int getOptionType() {
@@ -556,7 +549,6 @@
         selectionValues = newValues;
         firePropertyChange(SELECTION_VALUES_PROPERTY, oldSelectionValues, newValues);
         setWantsInput(selectionValues != null);
-		updateUI();
     }
 
     public Object[] getSelectionValues() {
@@ -567,7 +559,6 @@
         Object oldInitialSelectionValue = initialSelectionValue;
         initialSelectionValue = newValue;
         firePropertyChange(INITIAL_SELECTION_VALUE_PROPERTY, oldInitialSelectionValue, newValue);
-		updateUI();
     }
 
     public Object getInitialSelectionValue() {
@@ -578,7 +569,6 @@
         Object oldValue = inputValue;
         inputValue = newValue;
         firePropertyChange(INPUT_VALUE_PROPERTY, oldValue, newValue);
-		updateUI();
     }
 
     public Object getInputValue() {
@@ -593,7 +583,6 @@
         boolean oldValue = wantsInput;
         wantsInput = newValue;
         firePropertyChange(WANTS_INPUT_PROPERTY, oldValue, newValue);
-		updateUI();
     }
 
     public boolean getWantsInput() {
@@ -649,6 +638,5 @@
             return;
         }
         dialog.getRootPane().setWindowDecorationStyle(messageTypeToRootPaneDecoration(messageType));
-		//updateUI();
     }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicOptionPaneUI.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicOptionPaneUI.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicOptionPaneUI.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicOptionPaneUI.java Mon Aug 27 03:43:59 2007
@@ -194,21 +194,25 @@
                 return;
             }
 
-            JOptionPane pane = BasicOptionPaneUI.this.optionPane;
-            if (JOptionPane.ICON_PROPERTY.equals(event.getPropertyName()) ||
-                JOptionPane.MESSAGE_PROPERTY.equals(event.getPropertyName()) ||
-                JOptionPane.OPTIONS_PROPERTY.equals(event.getPropertyName()) ||
-                JOptionPane.INITIAL_VALUE_PROPERTY.equals(event.getPropertyName())) {
+            final JOptionPane pane = BasicOptionPaneUI.this.optionPane;
+            final String propName = event.getPropertyName();
+            
+            if (JOptionPane.ICON_PROPERTY.equals(propName) ||
+                JOptionPane.MESSAGE_PROPERTY.equals(propName) ||
+                JOptionPane.OPTIONS_PROPERTY.equals(propName) ||
+                JOptionPane.INITIAL_VALUE_PROPERTY.equals(propName)) {
 
+                uninstallComponents();
+                installComponents();
                 pane.revalidate();
-            } else if (JOptionPane.SELECTION_VALUES_PROPERTY.equals(event.getPropertyName()) ||
-                       JOptionPane.WANTS_INPUT_PROPERTY.equals(event.getPropertyName())) {
+            } else if (JOptionPane.SELECTION_VALUES_PROPERTY.equals(propName) ||
+                       JOptionPane.WANTS_INPUT_PROPERTY.equals(propName)) {
 
                 initValues(pane);
                 pane.revalidate();
-            } else if (JOptionPane.INITIAL_SELECTION_VALUE_PROPERTY.equals(event.getPropertyName())) {
+            } else if (JOptionPane.INITIAL_SELECTION_VALUE_PROPERTY.equals(propName)) {
                 setInputValue(event.getNewValue());
-            } else if (StringConstants.ANCESTOR_PROPERTY_NAME.equals(event.getPropertyName())
+            } else if (StringConstants.ANCESTOR_PROPERTY_NAME.equals(propName)
                     && (event.getOldValue() == null)) {
 
                 selectInitialValue(pane);

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java Mon Aug 27 03:43:59 2007
@@ -1095,21 +1095,29 @@
     }
 
     protected int xPositionForValue(final int value) {
-        int size = slider.getMaximum() - slider.getMinimum();
-        int result = drawInverted() ^ !slider.getComponentOrientation().isLeftToRight()
-                           ? trackRect.x + trackRect.width - (trackRect.width * (value - slider.getMinimum()) / size)
-                           : trackRect.x + trackRect.width * (value - slider.getMinimum()) / size;
+        // Changed according to JIRA 4445
+        double valueToSizeRatio = (double) value
+                / (double) (slider.getMaximum() - slider.getMinimum());
+
+        if ((drawInverted() ^ !slider.getComponentOrientation().isLeftToRight())) {
+            return (int) (trackRect.x + trackRect.width - (trackRect.width * valueToSizeRatio));
+        } else {
+            return (int) (trackRect.x + trackRect.width * valueToSizeRatio);
+        }
 
-        return result;
     }
 
     protected int yPositionForValue(final int value) {
-        int size = slider.getMaximum() - slider.getMinimum();
-        int result = drawInverted() ^ (!slider.getComponentOrientation().isLeftToRight() && slider.getOrientation() == JSlider.HORIZONTAL)
-                           ? trackRect.y + trackRect.height * (value - slider.getMinimum()) / size
-                           : trackRect.y + trackRect.height - (trackRect.height * (value - slider.getMinimum()) / size);
+        // Changed according to JIRA 4445
+        double valueToSizeRatio = (double) value
+                / (double) (slider.getMaximum() - slider.getMinimum());
 
-        return result;
+        if ((drawInverted() ^ (!slider.getComponentOrientation()
+                .isLeftToRight() && slider.getOrientation() == JSlider.HORIZONTAL))) {
+            return (int) (trackRect.y + trackRect.height * valueToSizeRatio);
+        } else {
+            return (int) (trackRect.y + trackRect.height - (trackRect.height * valueToSizeRatio));
+        }
     }
 
     public int valueForYPosition(final int yPos) {

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java Mon Aug 27 03:43:59 2007
@@ -181,7 +181,7 @@
                 components[RIGHT_COMPONENT_INDEX] = component;
             }
             
-            resetToPreferredSizes();
+            //resetToPreferredSizes();
         }
 
         public Dimension minimumLayoutSize(final Container container) {

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/FlowView.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/FlowView.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/FlowView.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/FlowView.java Mon Aug 27 03:43:59 2007
@@ -121,6 +121,7 @@
             int span = 0;
             int offset = pos;
             int weight = BadBreakWeight;
+            int fix=0;
             View view;
 
             do {
@@ -134,6 +135,7 @@
                     if (weight >= ForcedBreakWeight) {
                         final View broken = view.breakView(flowAxis, offset, x, rowSpan);
                         if (view == broken && row.getViewCount() > 0) {
+                            fix=1;
                             break;
                         }
                         view = broken;
@@ -148,7 +150,7 @@
                 adjustRow(fv, rowIndex, flowSpan, flowStart);
             }
 
-            return row.getEndOffset();
+            return row.getEndOffset()+fix;
         }
 
         protected View getLogicalView(final FlowView fv) {

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java Mon Aug 27 03:43:59 2007
@@ -95,6 +95,9 @@
     }
 
     public class HTMLReader extends HTMLEditorKit.ParserCallback {
+       
+        private boolean anchorReferenceEncountered = false;
+        
         public class TagAction {
             public void start(final Tag tag, final MutableAttributeSet attr) {
             }
@@ -362,18 +365,17 @@
         
         class AnchorAction extends CharacterAction {
             public void start(final Tag tag, final MutableAttributeSet attr) {
+                anchorReferenceEncountered = attr.isDefined(HTML.Attribute.HREF);
                 super.start(tag, attr);
                 openedBlocks.add(Tag.A);
-                anchorTextEncountered = false;
             }
             
             public void end(final Tag tag) {
-                if (openedBlocks.contains(Tag.A) && !anchorTextEncountered) {
-                    addContent(new char[] {' '}, 0, 1);
-                    anchorTextEncountered = true;
-                }
+                // According to H4574 Empty AncorTextEncoured verification has
+                // been removed
                 super.end(tag);
                 openedBlocks.remove(Tag.A);
+                anchorReferenceEncountered = false;
             }
         }
         
@@ -435,6 +437,20 @@
             }
         }
         
+        class ImageAction extends SpecialAction {
+
+            @Override
+            public void start(Tag tag, MutableAttributeSet attr) {
+
+                if (anchorReferenceEncountered) {
+
+                    attr.addAttributes(charAttr.copyAttributes());
+                }
+
+                super.start(tag, attr);
+            }
+        }
+        
         class BaseAction extends TagAction {
             public void start(final Tag tag, final MutableAttributeSet attr) {
                 checkInsertTag(tag);
@@ -553,7 +569,6 @@
         private final Set openedBlocks = new HashSet();
         private boolean impliedBlockOpen;
         private int numBlocksOpen;
-        private boolean anchorTextEncountered;
 
         private boolean needImpliedNewLine;
         private String styleRule;
@@ -628,9 +643,6 @@
         }
 
         public void handleText(final char[] data, final int pos) {
-            if (openedBlocks.contains(Tag.A)) {
-                anchorTextEncountered = true;
-            }
             if (openedBlocks.contains(Tag.TITLE)) {
                 putProperty(TitleProperty, new String(data));
                 return;
@@ -982,7 +994,7 @@
             tagActionMap.put(Tag.HTML, blockAction);
             tagActionMap.put(Tag.I, advancedCharacterAction);
             tagActionMap.put(Tag.IFRAME, hiddenAction);
-            tagActionMap.put(Tag.IMG, specialAction);
+            tagActionMap.put(Tag.IMG, new ImageAction());
             tagActionMap.put(Tag.INPUT, formAction);
             tagActionMap.put(Tag.INS, characterAction);
             tagActionMap.put(Tag.ISINDEX, new IsindexAction());

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/ImageView.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/ImageView.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/ImageView.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/ImageView.java Mon Aug 27 03:43:59 2007
@@ -21,7 +21,7 @@
 package javax.swing.text.html;
 
 import java.awt.Color;
-import java.awt.Component;
+import java.awt.Container;
 import java.awt.Font;
 import java.awt.FontMetrics;
 import java.awt.Graphics;
@@ -42,31 +42,36 @@
 import javax.swing.text.View;
 import javax.swing.text.ViewFactory;
 import javax.swing.text.Position.Bias;
+import javax.swing.text.html.CSS.ColorProperty;
 
 import org.apache.harmony.x.swing.text.html.HTMLIconFactory;
 
 public class ImageView extends View {
-    private static Icon loadingImageIcon;
-    private static Icon noImageIcon;
-
+   
     private AttributeSet attrs;
 
     private BackgroundImageLoader loader;
     private String src;
 
-    //TODO We can load images only synchronously yet
-    private boolean synchronous = true;
+    private boolean synchronous = false;
 
     private Color color;
     
     private int border;
     private int vSpace;
     private int hSpace;
+    
+    /** Not-found-property marker: Any negative number */
+    private final int INT_PROPERTY_NOT_FOUND = -1;
 
     public ImageView(final Element element) {
         super(element);
         if (element != null) { // Fix for HARMONY-1747, for compatibility with RI
             setPropertiesFromAttributes();
+            if (element.getAttributes().getAttribute(HTML.Tag.A) != null) {
+                setAnchorViewAttributes();
+            }
+            adjustBordersAndSpaces();
         }
     }
 
@@ -95,6 +100,7 @@
         return synchronous;
     }
 
+    @Override
     public float getPreferredSpan(final int axis) {
         if (loader.isError()) {
             String alt = getAltText();
@@ -121,6 +127,7 @@
         return loader.getHeight() + 2 * border + 2 * vSpace;
     }
 
+    @Override
     public String getToolTipText(final float x, final float y,
                                  final Shape shape) {
         return getAltText();
@@ -131,7 +138,8 @@
                        .getAttribute(HTML.Attribute.ALT);
     }
 
-public void paint(final Graphics g, final Shape shape) {
+    @Override
+    public void paint(final Graphics g, final Shape shape) {
         
         Rectangle rc = shape.getBounds();
         rc.setSize(rc.width - 2*(hSpace + border), rc.height - 2*(vSpace + border));
@@ -149,12 +157,14 @@
         }
         
         Color oldColor = g.getColor();
-        g.setColor(color);
-        g.fillRect(rc.x + hSpace, rc.y + vSpace, rc.width + 2 * border,
-                rc.height + 2 * border);
-        g.setColor(oldColor);
-        g.fillRect(rc.x + hSpace + border, rc.y + vSpace + border, rc.width,
-                rc.height);
+        if (border > 0) {
+            g.setColor(color);
+            g.fillRect(rc.x + hSpace, rc.y + vSpace, rc.width + 2 * border,
+                    rc.height + 2 * border);
+            g.setColor(oldColor);
+            g.fillRect(rc.x + hSpace + border, rc.y + vSpace + border,
+                    rc.width, rc.height);
+        }
 
         if (loader.isError()) {
             
@@ -189,6 +199,7 @@
         g.drawImage(getImage(), rc.x + hSpace + border, rc.y + vSpace + border, rc.width, rc.height, loader);
     }
 
+    @Override
     public Shape modelToView(final int pos, final Shape shape, final Bias bias)
         throws BadLocationException {
 
@@ -199,6 +210,7 @@
         return new Rectangle(rc.x + rc.width, rc.y, 0, rc.height);
     }
 
+    @Override
     public int viewToModel(final float x, final float y, final Shape shape,
                            final Bias[] bias) {
 
@@ -211,6 +223,7 @@
         return getEndOffset();
     }
 
+    @Override
     public float getAlignment(final int axis) {
         if (axis == Y_AXIS) {
             return 1;
@@ -218,10 +231,12 @@
         return super.getAlignment(axis);
     }
 
+    @Override
     public AttributeSet getAttributes() {
         return attrs;
     }
 
+    @Override
     public void changedUpdate(final DocumentEvent event, final Shape shape,
                               final ViewFactory factory) {
         setPropertiesFromAttributes();
@@ -261,6 +276,10 @@
         color = getStyleSheet().getForeground(getAttributes());
     }
     
+    /**
+     * Converts attribute value to number, correctly interprets by this view
+     * (i.e. null->negative number)
+     */
     private int getIntProperty(AttributeSet source, HTML.Attribute attr) {
         String result = (String) source.getAttribute(attr);
         // Null verification is added for possibly improved performance:
@@ -270,24 +289,62 @@
             try {
                 return Integer.parseInt(result);
             } catch (NumberFormatException nfe) {
-                // Ignored, return 0, according to RI's result
+                // Ignored, according to RI's result
             }
         }
-        return 0;
+        return INT_PROPERTY_NOT_FOUND;
     }
 
     private void createImage(final int desiredWidth, final int desiredHeight) {
         loader = new BackgroundImageLoader(getImageURL(), synchronous,
                                            desiredWidth, desiredHeight) {
+            @Override
             protected void onReady() {
                 super.onReady();
-                preferenceChanged(ImageView.this, true, true);
+                update();
             }
 
+            @Override
             protected void onError() {
                 super.onError();
+                update();
+            }
+
+            private void update() {
                 preferenceChanged(ImageView.this, true, true);
+                final Container component = getContainer();
+                if (component != null) {
+                    component.repaint();
+                }
             }
         };
+    }
+    
+    /**
+     * The method sets the 1px border (if the border is absent) and sets the
+     * color stated for &lt;a&gt; tag
+     */
+    private void setAnchorViewAttributes() {
+        if (border < 0) {
+            border = 1;
+        }
+        color = ((ColorProperty) getStyleSheet().getRule("a").getAttribute(
+                CSS.Attribute.COLOR)).getColor();
+    }
+
+    /**
+     * Sets negative properties to zero ones (negative property can either
+     * directly stated or returned by getIntProperty method)
+     */
+    private void adjustBordersAndSpaces() {
+        if (vSpace < 0) {
+            vSpace = 0;
+        }
+        if (hSpace < 0) {
+            hSpace = 0;
+        }
+        if (border < 0) {
+            border = 0;
+        }
     }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/undo/UndoManager.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/undo/UndoManager.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/undo/UndoManager.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/undo/UndoManager.java Mon Aug 27 03:43:59 2007
@@ -24,6 +24,12 @@
 import javax.swing.event.UndoableEditListener;
 
 public class UndoManager extends CompoundEdit implements UndoableEditListener {
+    /**
+     * <b>Note:</b> The <code>serialVersionUID</code> fields are explicitly
+     * declared as a performance optimization, not as a guarantee of
+     * serialization compatibility.
+     */
+    private static final long serialVersionUID = -8731438423915672404L;
 
     /**
      * Index points to edit from the array of edits.
@@ -43,8 +49,10 @@
     public UndoManager() {
         indexOfNextAdd = 0;
         limit          = DEFAULT_LIMIT;
+        edits.ensureCapacity(DEFAULT_LIMIT);
     }
 
+    @Override
     public synchronized boolean addEdit(final UndoableEdit anEdit) {
         if (inProgress) {
             // we need to remove edits only when indexOfNextAdd < size - 1
@@ -123,12 +131,14 @@
      *  Object obj = new UndoManager();
      *  System.out.println(obj.toString());
      */
+    @Override
     public String toString() {
         return super.toString()
             + " limit: " + limit
             + " indexOfNextAdd: " + indexOfNextAdd;
     }
 
+    @Override
     public synchronized String getUndoPresentationName() {
         if (inProgress) {
             UndoableEdit undoEdit = editToBeUndone();
@@ -149,6 +159,7 @@
         }
     }
 
+    @Override
     public synchronized String getRedoPresentationName() {
         if (inProgress) {
             UndoableEdit redoEdit = editToBeRedone();
@@ -188,6 +199,7 @@
         }
     }
 
+    @Override
     public synchronized boolean canUndo() {
         if (inProgress) {
             // find significant edit and call canUndo
@@ -198,7 +210,8 @@
         return super.canUndo();
     }
 
-     public synchronized boolean canRedo() {
+     @Override
+    public synchronized boolean canRedo() {
         if (inProgress) {
             // find significant edit and call canRedo
             UndoableEdit edit = editToBeRedone();
@@ -225,6 +238,7 @@
         }
     }
 
+    @Override
     public synchronized void undo() {
         if (inProgress) {
             // undo first significant edit before indexOfNextAdd
@@ -256,6 +270,7 @@
         }
     }
 
+    @Override
     public synchronized void redo() {
         if (inProgress) {
             // redoes last significant edit at index or later
@@ -271,6 +286,7 @@
         }
     }
 
+    @Override
     public synchronized void end() {
         // calls super's end
         super.end();

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java Mon Aug 27 03:43:59 2007
@@ -23,6 +23,7 @@
 import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JSlider;
+import javax.swing.SwingConstants;
 import javax.swing.SwingTestCase;
 import javax.swing.UIManager;
 import javax.swing.UnsupportedLookAndFeelException;
@@ -340,5 +341,57 @@
                 3, true);
         assertTrue(m.isEnabled());
     } 
+    
+    /**
+     * Regression test for HARMONY-4445
+     */
+    public void testMinMaxValue() {
+
+        slider.setMaximum(Integer.MAX_VALUE);
+        slider.setMinimum(0);
+        slider.setBounds(0,0,100,100);
+
+        int half = Integer.MAX_VALUE / 2;
+
+        // UI slightly modified to omit unneeded actions - no functional changes
+        // according to spec
+        BasicSliderUI tested = new BasicSliderUI(slider) {
+            @Override
+            protected void installKeyboardActions(JSlider unneded) {
+                // Empty. In real BasicSliderUI this method installs Keyboard
+                // actions
+            }
+
+            @Override
+            protected void installDefaults(JSlider unneded) {
+                // Empty. In real BasicSliderUI this method installs defaults
+                // (colors and fonts)
+            }
+
+            @Override
+            protected void installListeners(JSlider unneded) {
+                // Empty. In real BasicSliderUI this method installs listeners
+            }
+        };
+
+        tested.installUI(slider);
+        assertEquals(tested.xPositionForValue(half),
+                getCenterHorisontalPosition(tested));
+
+        slider.setOrientation(SwingConstants.VERTICAL);
+        tested.installUI(slider);
+
+        assertEquals(tested.yPositionForValue(half),
+                getCenterVerticalPosition(tested));
+        
+    }
+
+    private int getCenterVerticalPosition(BasicSliderUI ui) {
+        return ui.trackRect.y + (ui.trackRect.height / 2);
+    }
+
+    private int getCenterHorisontalPosition(BasicSliderUI ui) {
+        return ui.trackRect.x + (ui.trackRect.width / 2);
+    }
     
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java Mon Aug 27 03:43:59 2007
@@ -248,9 +248,9 @@
         assertEquals(0, reader.parseBuffer.size());
         reader.handleEndTag(tag, 0);
         assertEquals(0, reader.charAttr.getAttributeCount());
-        assertEquals(2, reader.parseBuffer.size());
-        assertSpec((ElementSpec)reader.parseBuffer.get(0), ElementSpec.StartTagType, ElementSpec.OriginateDirection, 0, null);
-        checkImplicitContentSpec((ElementSpec)reader.parseBuffer.get(1));
+        // The rest part of the test is deleted because according to H-4574
+        // there is no underscore added if no text encountered. all the
+        // verification in that part occurs in the testAnchorStartTextEnd        
     }
 
     public void testAnchorStartTextEnd() {

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java Mon Aug 27 03:43:59 2007
@@ -686,44 +686,40 @@
         }
     }
 
-    public void testResolveURL() {
-        try {
-            // Regression for HARMONY-4529
-            String base = "jar:file:test.jar!/root/current";
-            String relative = "dir/file";
-            String absolute = "http://host/file";
-            URL baseURL = new URL(base);
-            URL absoluteURL = new URL(absolute);
-            URL resolvedURL = new URL("jar:file:test.jar!/root/dir/file");
+    public void testResolveURL() throws Exception {
+        // Regression for HARMONY-4529
+        String base = "jar:file:test.jar!/root/current";
+        String relative = "dir/file";
+        String absolute = "http://host/file";
+        URL baseURL = new URL(base);
+        URL absoluteURL = new URL(absolute);
+        URL resolvedURL = new URL("jar:file:test.jar!/root/dir/file");
 
-            assertEquals(resolvedURL, HTML.resolveURL(relative, base));
-            assertEquals(resolvedURL, HTML.resolveURL(relative, baseURL));
+        assertEquals(resolvedURL, HTML.resolveURL(relative, base));
+        assertEquals(resolvedURL, HTML.resolveURL(relative, baseURL));
 
-            assertEquals(absoluteURL, HTML.resolveURL(absolute, base));
-            assertEquals(absoluteURL, HTML.resolveURL(absolute, baseURL));
-            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, base));
-            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, baseURL));
+        assertEquals(absoluteURL, HTML.resolveURL(absolute, base));
+        assertEquals(absoluteURL, HTML.resolveURL(absolute, baseURL));
+        assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, base));
+        assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, baseURL));
 
-            assertEquals(absoluteURL, HTML.resolveURL(absolute, (URL) null));
-            assertEquals(absoluteURL, HTML.resolveURL(absolute, (String) null));
-            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, (URL) null));
-            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, (String) null));
+        assertEquals(absoluteURL, HTML.resolveURL(absolute, (URL) null));
+        assertEquals(absoluteURL, HTML.resolveURL(absolute, (String) null));
+        assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, (URL) null));
+        assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, (String) null));
 
-            assertNull(HTML.resolveURL("", base));
-            assertNull(HTML.resolveURL("", baseURL));
-            assertNull(HTML.resolveURL((URL) null, base));
-            assertNull(HTML.resolveURL((URL) null, baseURL));
-            assertNull(HTML.resolveURL((String) null, base));
-            assertNull(HTML.resolveURL((String) null, baseURL));
+        assertNull(HTML.resolveURL("", base));
+        assertNull(HTML.resolveURL("", baseURL));
+        assertNull(HTML.resolveURL((URL) null, base));
+        assertNull(HTML.resolveURL((URL) null, baseURL));
+        assertNull(HTML.resolveURL((String) null, base));
+        assertNull(HTML.resolveURL((String) null, baseURL));
 
-            assertNull(HTML.resolveURL("", (URL) null));
-            assertNull(HTML.resolveURL("", (String) null));
-            assertNull(HTML.resolveURL((URL) null, (URL) null));
-            assertNull(HTML.resolveURL((URL) null, (String) null));
-            assertNull(HTML.resolveURL((String) null, (URL) null));
-            assertNull(HTML.resolveURL((String) null, (String) null));
-        } catch (Exception e) {
-            fail("Unexpected exception: " + e);
-        }
+        assertNull(HTML.resolveURL("", (URL) null));
+        assertNull(HTML.resolveURL("", (String) null));
+        assertNull(HTML.resolveURL((URL) null, (URL) null));
+        assertNull(HTML.resolveURL((URL) null, (String) null));
+        assertNull(HTML.resolveURL((String) null, (URL) null));
+        assertNull(HTML.resolveURL((String) null, (String) null));
     }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/ImageViewTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/ImageViewTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/ImageViewTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/ImageViewTest.java Mon Aug 27 03:43:59 2007
@@ -40,6 +40,7 @@
 import javax.swing.text.View;
 import javax.swing.text.Position.Bias;
 
+@SuppressWarnings({"deprecation", "serial"})
 public class ImageViewTest extends BasicSwingTestCase {
     private static final String DEFAULT_SRC = "image.jpg";
     private static final String DEFAULT_ALT = "image description";
@@ -160,12 +161,14 @@
     private int iconHeight;
     private static File imageFile;
 
+    @Override
     protected void setUp() throws Exception {
         super.setUp();
         setIgnoreNotImplemented(true);
         init();
     }
 
+    @Override
     protected void tearDown() throws Exception {
         super.tearDown();
         if (imageFile != null) {
@@ -176,6 +179,7 @@
     public void testImageView() {
         final Marker properties = new Marker();
         view = new ImageView(img) {
+            @Override
             protected void setPropertiesFromAttributes() {
                 properties.setOccurred();
                 super.setPropertiesFromAttributes();
@@ -263,7 +267,9 @@
         assertEquals(isHarmony() ? 18 : 38, icon.getIconHeight());
     }
 
-    public void testSetGetLoadsSynchronously() {
+    public void testSetLoadsSynchronously() {
+        assertFalse(view.getLoadsSynchronously());
+
         view.setLoadsSynchronously(true);
         assertTrue(view.getLoadsSynchronously());
 
@@ -271,6 +277,10 @@
         assertFalse(view.getLoadsSynchronously());
     }
 
+    public void testGetLoadsSynchronously() {
+        assertFalse(view.getLoadsSynchronously());
+    }
+
     // Has null image, alt text is not null
     public void testGetPreferredSpan01() {
         assertNull(attrs.getAttribute(CSS.Attribute.WIDTH));
@@ -371,6 +381,7 @@
     public void testGetToolTipText02() {
         final Marker marker = new Marker();
         view = new ImageView(img) {
+            @Override
             public String getAltText() {
                 marker.setOccurred();
                 return null;
@@ -403,12 +414,14 @@
     public void testGetAltText03() throws Exception {
         final Marker marker = new Marker();
         final AttributeSet vas = new SimpleAttributeSet() {
+            @Override
             public Object getAttribute(final Object key) {
                 marker.setOccurred();
                 return attrs.getAttribute(key);
             }
         };
         view = new ImageView(img) {
+            @Override
             public AttributeSet getAttributes() {
                 return vas;
             }
@@ -423,6 +436,7 @@
 
         final String value = "attribute value";
         final AttributeSet eas = new SimpleAttributeSet() {
+            @Override
             public Object getAttribute(final Object key) {
                 marker.setOccurred();
                 if (key == HTML.Attribute.ALT) {
@@ -474,6 +488,7 @@
     public void testSetParent() {
         final Marker properties = new Marker();
         view = new ImageView(img) {
+            @Override
             protected void setPropertiesFromAttributes() {
                 properties.setOccurred();
                 super.setPropertiesFromAttributes();
@@ -602,6 +617,7 @@
     public void testChangedUpdate() {
         final Marker properties = new Marker(true);
         view = new ImageView(img) {
+            @Override
             protected void setPropertiesFromAttributes() {
                 properties.setOccurred();
                 super.setPropertiesFromAttributes();
@@ -646,9 +662,11 @@
         final Marker color = new Marker(true);
         view = new ImageView(img) {
             private AttributeSet attributes;
+            @Override
             public AttributeSet getAttributes() {
                 if (attributes == null) {
                     attributes = new SimpleAttributeSet(super.getAttributes()) {
+                        @Override
                         public Object getAttribute(Object key) {
                             if (key == CSS.Attribute.COLOR) {
                                 color.setOccurred();

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/CompoundEditTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/CompoundEditTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/CompoundEditTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/CompoundEditTest.java Mon Aug 27 03:43:59 2007
@@ -447,4 +447,8 @@
         ce.undo();
         assertTrue(ce.canRedo());
     }
+
+    public void testEditsCapacity() { // Regression for HARMONY-2649
+        assertEquals(10, ce.edits.capacity());
+    }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/UndoManagerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/UndoManagerTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/UndoManagerTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/UndoManagerTest.java Mon Aug 27 03:43:59 2007
@@ -20,8 +20,6 @@
  */
 package javax.swing.undo;
 
-import java.util.Hashtable;
-
 import javax.swing.UIManager;
 import javax.swing.event.UndoableEditEvent;
 
@@ -743,5 +741,10 @@
         // must be called:
         // 1) edit3.die
         // 2) edit2.die
+    }
+
+    @Override
+    public void testEditsCapacity() { // Regression for HARMONY-2649
+        assertEquals(100, um.edits.capacity());
     }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/AttributedString.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/AttributedString.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/AttributedString.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/AttributedString.java Mon Aug 27 03:43:59 2007
@@ -577,8 +577,7 @@
                 it.previous();
                 break;
             } else if (start < range.end
-                    || (start == range.end && (value == null ? range.value == null
-                            : value.equals(range.value)))) {
+                    || (start == range.end && value.equals(range.value))) {
                 Range r1 = null, r3;
                 it.remove();
                 r1 = new Range(range.start, start, range.value);
@@ -588,8 +587,7 @@
                     range = it.next();
                     if (end <= range.end) {
                         if (end > range.start
-                                || (end == range.start && (value == null ? range.value == null
-                                        : value.equals(range.value)))) {
+                                || (end == range.start && value.equals(range.value))) {
                             it.remove();
                             r3 = new Range(end, range.end, range.value);
                             break;
@@ -599,9 +597,8 @@
                     }
                 }
 
-                if (value == null ? r1.value == null : value.equals(r1.value)) {
-                    if (value == null ? r3.value == null : value
-                            .equals(r3.value)) {
+                if (value.equals(r1.value)) {
+                    if (value.equals(r3.value)) {
                         it.add(new Range(r1.start < start ? r1.start : start,
                                 r3.end > end ? r3.end : end, r1.value));
                     } else {
@@ -612,8 +609,7 @@
                         }
                     }
                 } else {
-                    if (value == null ? r3.value == null : value
-                            .equals(r3.value)) {
+                    if (value.equals(r3.value)) {
                         if (r1.start < r1.end) {
                             it.add(r1);
                         }

Modified: harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/DecimalFormat.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/DecimalFormat.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/DecimalFormat.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/DecimalFormat.java Mon Aug 27 03:43:59 2007
@@ -18,7 +18,6 @@
 package java.text;
 
 import java.io.IOException;
-import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.ObjectStreamField;
@@ -29,8 +28,6 @@
 import java.util.Currency;
 import java.util.Locale;
 
-import org.apache.harmony.text.internal.nls.Messages;
-
 /**
  * DecimalFormat is used to format and parse numbers, both integers and
  * fractions, based on a pattern. The pattern characters used can be either
@@ -706,44 +703,44 @@
      *             if some I/O error occurs
      * @throws ClassNotFoundException
      */
+    @SuppressWarnings("nls")
     private void writeObject(ObjectOutputStream stream) throws IOException,
             ClassNotFoundException {
         ObjectOutputStream.PutField fields = stream.putFields();
-        fields.put("positivePrefix", dform.getPositivePrefix()); //$NON-NLS-1$
-        fields.put("positiveSuffix", dform.getPositiveSuffix()); //$NON-NLS-1$
-        fields.put("negativePrefix", dform.getNegativePrefix()); //$NON-NLS-1$
-        fields.put("negativeSuffix", dform.getNegativeSuffix()); //$NON-NLS-1$
+        fields.put("positivePrefix", dform.getPositivePrefix());
+        fields.put("positiveSuffix", dform.getPositiveSuffix());
+        fields.put("negativePrefix", dform.getNegativePrefix());
+        fields.put("negativeSuffix", dform.getNegativeSuffix());
         String posPrefixPattern = (String) this.getInternalField(
-                "posPrefixPattern", dform); //$NON-NLS-1$
-        fields.put("posPrefixPattern", posPrefixPattern); //$NON-NLS-1$
+                "posPrefixPattern", dform);
+        fields.put("posPrefixPattern", posPrefixPattern);
         String posSuffixPattern = (String) this.getInternalField(
-                "posSuffixPattern", dform); //$NON-NLS-1$
-        fields.put("posSuffixPattern", posSuffixPattern); //$NON-NLS-1$
+                "posSuffixPattern", dform);
+        fields.put("posSuffixPattern", posSuffixPattern);
         String negPrefixPattern = (String) this.getInternalField(
-                "negPrefixPattern", dform); //$NON-NLS-1$
-        fields.put("negPrefixPattern", negPrefixPattern); //$NON-NLS-1$
+                "negPrefixPattern", dform);
+        fields.put("negPrefixPattern", negPrefixPattern);
         String negSuffixPattern = (String) this.getInternalField(
-                "negSuffixPattern", dform); //$NON-NLS-1$
-        fields.put("negSuffixPattern", negSuffixPattern); //$NON-NLS-1$
-        fields.put("multiplier", dform.getMultiplier()); //$NON-NLS-1$
-        fields.put("groupingSize", (byte) dform.getGroupingSize()); //$NON-NLS-1$
-        fields.put("decimalSeparatorAlwaysShown", dform //$NON-NLS-1$
+                "negSuffixPattern", dform);
+        fields.put("negSuffixPattern", negSuffixPattern);
+        fields.put("multiplier", dform.getMultiplier());
+        fields.put("groupingSize", (byte) dform.getGroupingSize());
+        fields.put("decimalSeparatorAlwaysShown", dform
                 .isDecimalSeparatorAlwaysShown());
-        fields.put("parseBigDecimal", parseBigDecimal); //$NON-NLS-1$
-        fields.put("symbols", symbols); //$NON-NLS-1$
+        fields.put("parseBigDecimal", parseBigDecimal);
+        fields.put("symbols", symbols);
         boolean useExponentialNotation = ((Boolean) this.getInternalField(
-                "useExponentialNotation", dform)).booleanValue(); //$NON-NLS-1$
-        fields.put("useExponentialNotation", useExponentialNotation); //$NON-NLS-1$
+                "useExponentialNotation", dform)).booleanValue();
+        fields.put("useExponentialNotation", useExponentialNotation);
         byte minExponentDigits = ((Byte) this.getInternalField(
-                "minExponentDigits", dform)).byteValue(); //$NON-NLS-1$
-        fields.put("minExponentDigits", minExponentDigits); //$NON-NLS-1$
-        fields.put("maximumIntegerDigits", dform.getMaximumIntegerDigits()); //$NON-NLS-1$
-        fields.put("minimumIntegerDigits", dform.getMinimumIntegerDigits()); //$NON-NLS-1$
-        fields.put("maximumFractionDigits", dform.getMaximumFractionDigits()); //$NON-NLS-1$
-        fields.put("minimumFractionDigits", dform.getMinimumFractionDigits()); //$NON-NLS-1$
-        fields.put("serialVersionOnStream", CURRENT_SERIAL_VERTION); //$NON-NLS-1$
+                "minExponentDigits", dform)).byteValue();
+        fields.put("minExponentDigits", minExponentDigits);
+        fields.put("maximumIntegerDigits", dform.getMaximumIntegerDigits());
+        fields.put("minimumIntegerDigits", dform.getMinimumIntegerDigits());
+        fields.put("maximumFractionDigits", dform.getMaximumFractionDigits());
+        fields.put("minimumFractionDigits", dform.getMinimumFractionDigits());
+        fields.put("serialVersionOnStream", CURRENT_SERIAL_VERTION);
         stream.writeFields();
-
     }
 
     /**
@@ -757,52 +754,53 @@
      * @throws ClassNotFoundException
      *             if some class of serialized objects or fields cannot be found
      */
+    @SuppressWarnings("nls")
     private void readObject(ObjectInputStream stream) throws IOException,
             ClassNotFoundException {
 
         ObjectInputStream.GetField fields = stream.readFields();
-        String positivePrefix = (String) fields.get("positivePrefix", ""); //$NON-NLS-1$ //$NON-NLS-2$
-        String positiveSuffix = (String) fields.get("positiveSuffix", ""); //$NON-NLS-1$ //$NON-NLS-2$
-        String negativePrefix = (String) fields.get("negativePrefix", "-"); //$NON-NLS-1$ //$NON-NLS-2$
-        String negativeSuffix = (String) fields.get("negativeSuffix", ""); //$NON-NLS-1$ //$NON-NLS-2$
-
-        String posPrefixPattern = (String) fields.get("posPrefixPattern", ""); //$NON-NLS-1$ //$NON-NLS-2$
-        String posSuffixPattern = (String) fields.get("posSuffixPattern", ""); //$NON-NLS-1$ //$NON-NLS-2$
-        String negPrefixPattern = (String) fields.get("negPrefixPattern", "-"); //$NON-NLS-1$ //$NON-NLS-2$
-        String negSuffixPattern = (String) fields.get("negSuffixPattern", ""); //$NON-NLS-1$ //$NON-NLS-2$
+        String positivePrefix = (String) fields.get("positivePrefix", "");
+        String positiveSuffix = (String) fields.get("positiveSuffix", "");
+        String negativePrefix = (String) fields.get("negativePrefix", "-");
+        String negativeSuffix = (String) fields.get("negativeSuffix", "");
+
+        String posPrefixPattern = (String) fields.get("posPrefixPattern", "");
+        String posSuffixPattern = (String) fields.get("posSuffixPattern", "");
+        String negPrefixPattern = (String) fields.get("negPrefixPattern", "-");
+        String negSuffixPattern = (String) fields.get("negSuffixPattern", "");
 
-        int multiplier = fields.get("multiplier", 1); //$NON-NLS-1$
-        byte groupingSize = fields.get("groupingSize", (byte) 3); //$NON-NLS-1$
+        int multiplier = fields.get("multiplier", 1);
+        byte groupingSize = fields.get("groupingSize", (byte) 3);
         boolean decimalSeparatorAlwaysShown = fields.get(
-                "decimalSeparatorAlwaysShown", false); //$NON-NLS-1$
-        boolean parseBigDecimal = fields.get("parseBigDecimal", false); //$NON-NLS-1$
-        symbols = (DecimalFormatSymbols) fields.get("symbols", null); //$NON-NLS-1$
+                "decimalSeparatorAlwaysShown", false);
+        boolean parseBigDecimal = fields.get("parseBigDecimal", false);
+        symbols = (DecimalFormatSymbols) fields.get("symbols", null);
 
-        boolean useExponentialNotation = fields.get("useExponentialNotation", //$NON-NLS-1$
+        boolean useExponentialNotation = fields.get("useExponentialNotation",
                 false);
-        byte minExponentDigits = fields.get("minExponentDigits", (byte) 0); //$NON-NLS-1$
+        byte minExponentDigits = fields.get("minExponentDigits", (byte) 0);
 
-        int maximumIntegerDigits = fields.get("maximumIntegerDigits", 309); //$NON-NLS-1$
-        int minimumIntegerDigits = fields.get("minimumIntegerDigits", 309); //$NON-NLS-1$
-        int maximumFractionDigits = fields.get("maximumFractionDigits", 340); //$NON-NLS-1$
-        int minimumFractionDigits = fields.get("minimumFractionDigits", 340); //$NON-NLS-1$
-        this.serialVersionOnStream = fields.get("serialVersionOnStream", 0); //$NON-NLS-1$
+        int maximumIntegerDigits = fields.get("maximumIntegerDigits", 309);
+        int minimumIntegerDigits = fields.get("minimumIntegerDigits", 309);
+        int maximumFractionDigits = fields.get("maximumFractionDigits", 340);
+        int minimumFractionDigits = fields.get("minimumFractionDigits", 340);
+        this.serialVersionOnStream = fields.get("serialVersionOnStream", 0);
 
-        Locale locale = (Locale) getInternalField("locale", symbols); //$NON-NLS-1$
-        dform = new com.ibm.icu.text.DecimalFormat("", //$NON-NLS-1$
+        Locale locale = (Locale) getInternalField("locale", symbols);
+        dform = new com.ibm.icu.text.DecimalFormat("",
                 new com.ibm.icu.text.DecimalFormatSymbols(locale));
-        setInternalField("useExponentialNotation", dform, new Boolean( //$NON-NLS-1$
-                useExponentialNotation));
-        setInternalField("minExponentDigits", dform, //$NON-NLS-1$
+        setInternalField("useExponentialNotation", dform, Boolean
+                .valueOf(useExponentialNotation));
+        setInternalField("minExponentDigits", dform,
                 new Byte(minExponentDigits));
         dform.setPositivePrefix(positivePrefix);
         dform.setPositiveSuffix(positiveSuffix);
         dform.setNegativePrefix(negativePrefix);
         dform.setNegativeSuffix(negativeSuffix);
-        setInternalField("posPrefixPattern", dform, posPrefixPattern); //$NON-NLS-1$
-        setInternalField("posSuffixPattern", dform, posSuffixPattern); //$NON-NLS-1$
-        setInternalField("negPrefixPattern", dform, negPrefixPattern); //$NON-NLS-1$
-        setInternalField("negSuffixPattern", dform, negSuffixPattern); //$NON-NLS-1$
+        setInternalField("posPrefixPattern", dform, posPrefixPattern);
+        setInternalField("posSuffixPattern", dform, posSuffixPattern);
+        setInternalField("negPrefixPattern", dform, negPrefixPattern);
+        setInternalField("negSuffixPattern", dform, negSuffixPattern);
         dform.setMultiplier(multiplier);
         dform.setGroupingSize(groupingSize);
         dform.setDecimalSeparatorAlwaysShown(decimalSeparatorAlwaysShown);
@@ -812,13 +810,6 @@
         dform.setMaximumFractionDigits(maximumFractionDigits);
         this.setParseBigDecimal(parseBigDecimal);
 
-        if (super.getMaximumIntegerDigits() > Integer.MAX_VALUE
-                || super.getMinimumIntegerDigits() > Integer.MAX_VALUE
-                || super.getMaximumFractionDigits() > Integer.MAX_VALUE
-                || super.getMinimumIntegerDigits() > Integer.MAX_VALUE) {
-            // text.09=The deserialized date is invalid
-            throw new InvalidObjectException(Messages.getString("text.09")); //$NON-NLS-1$
-        }
         if (serialVersionOnStream < 3) {
             setMaximumIntegerDigits(super.getMaximumIntegerDigits());
             setMinimumIntegerDigits(super.getMinimumIntegerDigits());
@@ -826,7 +817,7 @@
             setMinimumFractionDigits(super.getMinimumFractionDigits());
         }
         if (serialVersionOnStream < 1) {
-            this.setInternalField("useExponentialNotation", dform, //$NON-NLS-1$
+            this.setInternalField("useExponentialNotation", dform,
                     Boolean.FALSE);
         }
         serialVersionOnStream = 3;