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 [1/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...

Author: pyang
Date: Mon Aug 27 03:43:59 2007
New Revision: 570061

URL: http://svn.apache.org/viewvc?rev=570061&view=rev
Log:
Merge updates from classlib trunk@570018 since r565677

Added:
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSResourcesMonitor.java
      - copied unchanged from r569416, harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSResourcesMonitor.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/shared/OSResourcesMonitor.h
      - copied unchanged from r569416, harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/shared/OSResourcesMonitor.h
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSResourcesMonitorLinux.c
      - copied unchanged from r569416, harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/unix/OSResourcesMonitorLinux.c
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSResourcesMonitorWin32.c
      - copied unchanged from r569416, harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/windows/OSResourcesMonitorWin32.c
    harmony/enhanced/classlib/branches/java6/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/
      - copied from r569416, harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/
    harmony/enhanced/classlib/branches/java6/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java
      - copied, changed from r569416, harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/rowset/CachedRowSetImpl.java
    harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/internal/
      - copied from r569416, harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/internal/
    harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/internal/rowset/
      - copied from r569416, harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/internal/rowset/
    harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/internal/rowset/CachedRowSetImplTest.java
      - copied unchanged from r569416, harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/internal/rowset/CachedRowSetImplTest.java
Removed:
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/BeanInfoData.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/BeanInfoImpl.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/BeanInfoWrapper.java
Modified:
    harmony/enhanced/classlib/branches/java6/depends/build/defines.mk
    harmony/enhanced/classlib/branches/java6/make/build-test.xml
    harmony/enhanced/classlib/branches/java6/make/depends.properties
    harmony/enhanced/classlib/branches/java6/make/depends.xml
    harmony/enhanced/classlib/branches/java6/modules/archive/src/main/java/java/util/zip/Deflater.java
    harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/ietf/jgss/OidTest.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/Area.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/FlatteningPathIterator.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/CrossingHelper.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/GeometryUtil.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/Crossing.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/render/JavaBlitter.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java
    harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/geom/AreaTest.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/EventSetDescriptor.java
    harmony/enhanced/classlib/branches/java6/modules/logging/src/main/java/java/util/logging/Logger.java
    harmony/enhanced/classlib/branches/java6/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java
    harmony/enhanced/classlib/branches/java6/modules/logging/src/test/resources/config/java/util/logging/logging.config
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/File.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectInputStream.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectStreamClass.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/lang/Character.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Arrays.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/LinkedHashMap.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Locale.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSMemory.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.c
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.h
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/exports.txt
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/makefile
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.c
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.h
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/makefile
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/ObjectInputStreamTest.java
    harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigDecimal.java
    harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigInteger.java
    harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/Logical.java
    harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigDecimalTest.java
    harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigIntegerTest.java
    harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/org/apache/harmony/nio/internal/SelectorImpl.java
    harmony/enhanced/classlib/branches/java6/modules/sql/build.xml
    harmony/enhanced/classlib/branches/java6/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/JOptionPane.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicOptionPaneUI.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/FlowView.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/ImageView.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/undo/UndoManager.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/ImageViewTest.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/CompoundEditTest.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/undo/UndoManagerTest.java
    harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/AttributedString.java
    harmony/enhanced/classlib/branches/java6/modules/text/src/main/java/java/text/DecimalFormat.java

Modified: harmony/enhanced/classlib/branches/java6/depends/build/defines.mk
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/depends/build/defines.mk?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/depends/build/defines.mk (original)
+++ harmony/enhanced/classlib/branches/java6/depends/build/defines.mk Mon Aug 27 03:43:59 2007
@@ -54,7 +54,7 @@
 INCLUDES += -I$(HY_HDK)/include -I$(HY_HDK)/jdk/include -I. -I$(SHAREDSUB)
 
 ifndef HYDEBUGCFLAGS
-HYDEBUGCFLAGS = -g
+HYDEBUGCFLAGS = -ggdb -O0
 endif
 
 ifndef HYRELEASECFLAGS  
@@ -83,4 +83,4 @@
 
 ifeq ($(HY_ZIP_API),true)
 DEFINES += -DHY_ZIP_API
-endif
\ No newline at end of file
+endif

Modified: harmony/enhanced/classlib/branches/java6/make/build-test.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/make/build-test.xml?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/make/build-test.xml (original)
+++ harmony/enhanced/classlib/branches/java6/make/build-test.xml Mon Aug 27 03:43:59 2007
@@ -99,6 +99,9 @@
         <fileset dir="${jetty.dir}">
             <include name="*.jar" />
         </fileset>
+        <fileset dir="${derby.dir}">
+            <include name="*.jar" />
+        </fileset>
         </copy>
     </target>
 

Modified: harmony/enhanced/classlib/branches/java6/make/depends.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/make/depends.properties?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/make/depends.properties (original)
+++ harmony/enhanced/classlib/branches/java6/make/depends.properties Mon Aug 27 03:43:59 2007
@@ -55,7 +55,8 @@
 msvcr.dir.x86_64=${depends.dir}/libs/windows.x86_64
 msvcr.dll.x86_64=${msvcr.dir.x86_64}/msvcr80.dll
 msvcr.dll.file.x86_64=msvcr80.dll
-msvcr.url.x86_64=file:///${hyenv.SystemRoot}/system32/msvcr80.dll
+#msvcr.url.x86_64=file:///${hyenv.SystemRoot}/system32/msvcr80.dll
+msvcr.url.x86_64=file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%208/VC/redist/amd64/Microsoft.VC80.CRT/msvcr80.dll
 msvcr.md5.x86_64=465cebd7da2ceaba5e552fc9118a1415
 
 icu4j.dir=${depends.jars}/icu4j_3.4.4
@@ -130,4 +131,9 @@
 dejavu-fonts.zip=${dejavu-fonts.dir}/dejavu-ttf-2.18-1.zip
 dejavu-fonts.url=http://dfn.dl.sourceforge.net/sourceforge/dejavu/dejavu-ttf-2.18-1.zip
 dejavu-fonts.md5=72e0a87ec1f9c5c26c66eabcf1e2018e
+
+derby.dir=${depends.dir}/derby
+derby.jar=${derby.dir}/derby.jar
+derby.url=http://www.ibiblio.org/maven/org.apache.derby/jars/derby-10.3.1.4.jar
+derby.md5=f28d6047ab26445de53c4c96126494df
 

Modified: harmony/enhanced/classlib/branches/java6/make/depends.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/make/depends.xml?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/make/depends.xml (original)
+++ harmony/enhanced/classlib/branches/java6/make/depends.xml Mon Aug 27 03:43:59 2007
@@ -48,6 +48,7 @@
         <check-one-file src="${jetty-util.url}" dest="${jetty-util.jar}" />
         <check-one-file src="${servlet-api.url}" dest="${servlet-api.jar}" />
         <check-one-file src="${dejavu-fonts.url}" dest="${dejavu-fonts.zip}" />
+        <check-one-file src="${derby.url}" dest="${derby.jar}" />
     </target>
 
     <target name="-check-win" if="is.windows" depends="-really-check-win" />
@@ -348,6 +349,11 @@
     <download-one-file src="${dejavu-fonts.url}" dest="${dejavu-fonts.zip}"
                            md5="${dejavu-fonts.md5}" />
     <unzip src="${dejavu-fonts.zip}" dest="${dejavu-fonts.dir}" />
+
+    <mkdir dir="${derby.dir}" />
+    <download-one-file src="${derby.url}"
+                       dest="${derby.jar}"
+                       md5="${derby.md5}" />
     </target>
 
     <target name="-download-win" if="is.windows" depends="-select-win-deps-x86_64,-select-win-deps-x86">
@@ -364,7 +370,6 @@
     <download-one-file src="${awtdeps.url}"
                        dest="${awtdeps.tar}"
                        md5="${awtdeps.md5}" />
-
     </target>
 
     <macrodef name="download-one-file">

Modified: harmony/enhanced/classlib/branches/java6/modules/archive/src/main/java/java/util/zip/Deflater.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/archive/src/main/java/java/util/zip/Deflater.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/archive/src/main/java/java/util/zip/Deflater.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/archive/src/main/java/java/util/zip/Deflater.java Mon Aug 27 03:43:59 2007
@@ -17,6 +17,8 @@
 
 package java.util.zip;
 
+import org.apache.harmony.luni.platform.OSResourcesMonitor;
+
 /**
  * The Deflater class is used to compress bytes using the DEFLATE compression
  * algorithm. Deflation is performed by the ZLIB compression library.
@@ -110,7 +112,7 @@
             throw new IllegalArgumentException();
         }
         compressLevel = level;
-        streamHandle = createStream(compressLevel, strategy, noHeader);
+        streamHandle = createStreamWithMemoryEnsurance(compressLevel, strategy, noHeader);
     }
 
     /**
@@ -431,5 +433,9 @@
         return getTotalOutImpl(streamHandle);
     }
 
+    private long createStreamWithMemoryEnsurance(int level, int strategy1, boolean noHeader1){
+        OSResourcesMonitor.ensurePhysicalMemoryCapacity();
+        return createStream(level, strategy1, noHeader1);
+    }
     private native long createStream(int level, int strategy1, boolean noHeader1);
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/ietf/jgss/OidTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/ietf/jgss/OidTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/ietf/jgss/OidTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/ietf/jgss/OidTest.java Mon Aug 27 03:43:59 2007
@@ -313,4 +313,11 @@
         } catch (GSSException e) {
         }
     }
+    
+    public void test_KerberosV5() throws Exception {
+        Oid oid = new Oid("1.2.840.113554.1.2.2");
+        byte[] expectedDer = new byte[] { 6, 9, 42, -122, 72, -122, -9, 18, 1,
+                2, 2 };
+        assertTrue(Arrays.equals(expectedDer, oid.getDER()));
+    }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/Area.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/Area.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/Area.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/Area.java Mon Aug 27 03:43:59 2007
@@ -241,27 +241,57 @@
 	}
 
 	public void add(Area area) {
+    	if (area == null || area.isEmpty()) {
+    	    return;
+    	} else if (isEmpty()) {
+    	    copy(area, this);
+    		return;
+    	}
+
 		if (isPolygonal() && area.isPolygonal()) {
 			addPolygon(area);
 		} else {
 			addCurvePolygon(area);
 		}
+		
+		if (getAreaBoundsSquare() < GeometryUtil.EPSILON) {
+		    reset();
+		}
 	}
 	   
 	public void intersect(Area area) {
+		if (area == null) {
+		    return;
+		} else if (isEmpty() || area.isEmpty()) {
+		    reset();
+			return;		
+		}
+		
 		if (isPolygonal() && area.isPolygonal()) {
 			intersectPolygon(area);
 		} else {
 			intersectCurvePolygon(area);
 		}
+		
+		if (getAreaBoundsSquare() < GeometryUtil.EPSILON) {
+		    reset();
+		}
 	}
 	
 	public void subtract(Area area) {
+		if (area == null || isEmpty() || area.isEmpty()) {
+		    return;
+		}
+
 		if (isPolygonal() && area.isPolygonal()) {
 			subtractPolygon(area);
 		} else {
 			subtractCurvePolygon(area);
 		}
+		
+		if (getAreaBoundsSquare() < GeometryUtil.EPSILON) {
+		    reset();
+		}
 	}
 	
  	public void exclusiveOr(Area area) {
@@ -441,8 +471,9 @@
             double[] coords = (isCurrentArea) ? this.coords : area.coords;
             int offset = 2 * point.getEndIndex(isCurrentArea);
  
-            if (nextPoint.getBegIndex(isCurrentArea) < 
-            		point.getEndIndex(isCurrentArea)) {
+            if ((offset >= 0) && 
+            	    (nextPoint.getBegIndex(isCurrentArea) < 
+            		    point.getEndIndex(isCurrentArea))) {
                 int coordSize = (isCurrentArea) ? this.coordsSize : 
                 	                              area.coordsSize;
                 int length = coordSize - offset;
@@ -458,14 +489,16 @@
                 offset = 0;
             }
             
-            int length = 2 * nextPoint.getBegIndex(isCurrentArea) - offset + 2;
-            System.arraycopy(coords, offset, 
-            		         resultCoords, resultCoordPos, length);
-            
-            for (int i = 0; i < length / 2; i++) {
-            	resultRules[resultRulesPos] = PathIterator.SEG_LINETO;
-            	resultOffsets[resultRulesPos++] = resultCoordPos;
-            	resultCoordPos += 2;
+            if (offset >= 0) {
+                int length = 2 * nextPoint.getBegIndex(isCurrentArea) - offset + 2;
+                System.arraycopy(coords, offset, 
+            		             resultCoords, resultCoordPos, length);
+            
+                for (int i = 0; i < length / 2; i++) {
+            	    resultRules[resultRulesPos] = PathIterator.SEG_LINETO;
+            	    resultOffsets[resultRulesPos++] = resultCoordPos;
+            	    resultCoordPos += 2;
+                }
             }
 
             point = nextPoint;
@@ -814,21 +847,26 @@
 				                                        area.coordsSize });
 		IntersectPoint[] intersectPoints = crossHelper.findCrossing();
 
-		if ((intersectPoints.length == 0) && (contains(area.getBounds2D()))) {
-			copy(area, this);
-			return;
-		} 
+		if (intersectPoints.length == 0) {
+		    if (contains(area.getBounds2D())) {
+		        copy(area, this);
+		        return;
+			} 
+		    return;
+		}
 
-        double[] resultCoords = new double[coordsSize + area.coordsSize + 
-                                                       intersectPoints.length];
-        int[] resultRules = new int[rulesSize + area.rulesSize + 
-                                                       intersectPoints.length];
-        int[] resultOffsets = new int[rulesSize + area.rulesSize + 
-                                                       intersectPoints.length];
+        double[] resultCoords = new double[2 * (coordsSize + area.coordsSize + 
+                                                       intersectPoints.length)];
+        int[] resultRules = new int[2 * (rulesSize + area.rulesSize + 
+                                                       intersectPoints.length)];
+        int[] resultOffsets = new int[2 * (rulesSize + area.rulesSize + 
+                                                       intersectPoints.length)];
         int resultCoordPos = 0;
         int resultRulesPos = 0;
         boolean isCurrentArea = true;
-        int count = 0;
+        int countPoints = 0;
+        boolean curArea = false;
+        boolean addArea = false;
 
         IntersectPoint point = intersectPoints[0];
         resultRules[resultRulesPos] = PathIterator.SEG_MOVETO;
@@ -842,8 +880,11 @@
             int curIndex = point.getEndIndex(true);
             
             if ((curIndex < 0) || 
-            	(area.containsExact(coords[2 * curIndex], 
-            			            coords[2 * curIndex + 1]) > 0)) {
+            		(area.isVertex(coords[2 * curIndex], coords[2 * curIndex + 1]) && 
+            		     crossHelper.containsPoint(new double[] {coords[2 * curIndex], 
+            				                       coords[2 * curIndex + 1]}) && 
+            		(coords[2 * curIndex] != point.getX() || 
+            			 coords[2 * curIndex + 1] != point.getY()))) {
             	isCurrentArea = !isCurrentArea;
             } else if (area.containsExact(coords[2 * curIndex], 
             		                      coords[2 * curIndex + 1]) > 0) { 
@@ -851,6 +892,16 @@
             } else {
             	isCurrentArea = true;
             }
+            
+            if (countPoints >= intersectPoints.length) {
+                isCurrentArea = !isCurrentArea;
+            }
+            	 
+            if (isCurrentArea) {
+                curArea = true;
+            } else {
+                addArea = true;
+            }
 
             IntersectPoint nextPoint = (isCurrentArea) ? 
             		getNextIntersectPoint(intersectPoints, point, isCurrentArea):
@@ -916,27 +967,22 @@
             }
 
             point = nextPoint;
-            count++;
-        } while (point != intersectPoints[0] && count <= intersectPoints.length);
+            countPoints++;
+        } while (point != intersectPoints[0] || !(curArea && addArea));
         
-        if (count > intersectPoints.length) {
-        	reset();
-        } else {
-            resultRules[resultRulesPos - 1] = PathIterator.SEG_CLOSE;
-            resultOffsets[resultRulesPos - 1] = resultCoordPos;
-		    coords = resultCoords;
-		    rules = resultRules;
-		    offsets = resultOffsets;
-		    coordsSize = resultCoordPos;
-		    rulesSize = resultRulesPos;
-        }
+        resultRules[resultRulesPos - 1] = PathIterator.SEG_CLOSE;
+        resultOffsets[resultRulesPos - 1] = resultCoordPos;
+	    coords = resultCoords;
+	    rules = resultRules;
+	    offsets = resultOffsets;
+	    coordsSize = resultCoordPos;
+	    rulesSize = resultRulesPos;
 	}
 	
-	   private IntersectPoint getNextIntersectPoint(IntersectPoint[] iPoints,
+	private IntersectPoint getNextIntersectPoint(IntersectPoint[] iPoints,
 			                                        IntersectPoint isectPoint, 
 			                                        boolean isCurrentArea) {
-		   
-		int endIndex = isectPoint.getEndIndex(isCurrentArea);
+	    int endIndex = isectPoint.getEndIndex(isCurrentArea);
 		if (endIndex < 0) {
 			return iPoints[Math.abs(endIndex) - 1];
 		}
@@ -1227,6 +1273,20 @@
     	}
     }
     
+    private double getAreaBoundsSquare() {
+        Rectangle2D bounds = getBounds2D();
+        return bounds.getHeight() * bounds.getWidth();
+    }
+
+    private boolean isVertex(double x, double y) {
+        for (int i = 0; i < coordsSize;) {
+    	    if (x == coords[i++] && y == coords[i++]) {
+    		    return true;
+    		}
+    	}
+    	return false;
+    }
+
     // the internal class implements PathIterator
 	private class AreaPathIterator implements PathIterator {
 

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/FlatteningPathIterator.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/FlatteningPathIterator.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/FlatteningPathIterator.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/java/awt/geom/FlatteningPathIterator.java Mon Aug 27 03:43:59 2007
@@ -207,9 +207,7 @@
             if (bufEmpty) {
                 bufIndex = bufSize;
                 bufType = SEG_LINETO;
-            } else {
-                bufSubdiv--;
-            }
+            } 
             break;
         case SEG_CUBICTO:
             if (bufEmpty) {
@@ -251,9 +249,7 @@
             if (bufEmpty) {
                 bufIndex = bufSize;
                 bufType = SEG_LINETO;
-            } else {
-                bufSubdiv--;
-            }
+            } 
             break;
         }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/CrossingHelper.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/CrossingHelper.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/CrossingHelper.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/CrossingHelper.java Mon Aug 27 03:43:59 2007
@@ -284,7 +284,7 @@
         }
     }
     
-    private boolean containsPoint(double[] point) {
+    public boolean containsPoint(double[] point) {
     	IntersectPoint ipoint;
     	
     	for (Iterator i = isectPoints.iterator(); i.hasNext(); ) {

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/GeometryUtil.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/GeometryUtil.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/GeometryUtil.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/geom/GeometryUtil.java Mon Aug 27 03:43:59 2007
@@ -19,7 +19,7 @@
 import org.apache.harmony.awt.gl.Crossing;
 
 public class GeometryUtil {
-    static final double EPSILON = Math.pow(10, -15);
+    public static final double EPSILON = Math.pow(10, -14);
 
     public static int intersectLinesWithParams(double x1, double y1, double x2, double y2,
                                                double x3, double y3, double x4, double y4,

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/Crossing.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/Crossing.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/Crossing.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/Crossing.java Mon Aug 27 03:43:59 2007
@@ -382,9 +382,14 @@
             }
         }
 
-        // START or END
-        if (x == x1 || x == x2) {
-            return 0;
+        // START
+        if (x == x1) {
+        	return x1 < x2 ? 0 : -1;        
+        }
+        
+        // END
+        if (x == x2) {
+        	return x1 < x2 ? 1 : 0;        
         }
 
         // INSIDE-DOWN
@@ -486,6 +491,13 @@
                     cross += crossLine(cx, cy, cx = mx, cy = my, x, y);
                 }
                 break;
+            }
+            
+            // checks if the point (x,y) is the vertex of shape with PathIterator p           
+            if (x == cx && y == cy) {
+            	cross = 0;
+            	cy = my;
+            	break;
             }
             p.next();
         }

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/render/JavaBlitter.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/render/JavaBlitter.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/render/JavaBlitter.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/render/JavaBlitter.java Mon Aug 27 03:43:59 2007
@@ -357,7 +357,7 @@
         Rectangle dstBlitBounds = new Rectangle(dstX, dstY, srcR.getWidth(), srcR.getHeight());
 
         Rectangle transSrcBounds = getBounds2D(at, srcBounds).getBounds();
-        Rectangle transDstBlitBounds = getBounds2D(at, dstBlitBounds).getBounds();
+        Rectangle transDstBlitBounds = new Rectangle(0, 0, dstR.getWidth(), dstR.getHeight());
 
         int translateX = transDstBlitBounds.x - transSrcBounds.x;
         int translateY = transDstBlitBounds.y - transSrcBounds.y;
@@ -474,7 +474,7 @@
 
     }
 
-    private Rectangle2D getBounds2D(AffineTransform at, Rectangle r) {
+    public static Rectangle2D getBounds2D(AffineTransform at, Rectangle r) {
         int x = r.x;
         int y = r.y;
         int width = r.width;

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java Mon Aug 27 03:43:59 2007
@@ -31,6 +31,7 @@
 
 import org.apache.harmony.awt.gl.*;
 import org.apache.harmony.awt.gl.render.Blitter;
+import org.apache.harmony.awt.gl.render.JavaBlitter;
 import org.apache.harmony.awt.gl.render.NativeImageBlitter;
 import org.apache.harmony.awt.nativebridge.linux.X11;
 import org.apache.harmony.awt.nativebridge.linux.X11Defs;
@@ -169,76 +170,49 @@
             default:
                 XSurface xDstSurf = (XSurface) dstSurf;
 
-                BufferedImage compIm;
-                int w = srcSurf.getWidth();
-                int h = srcSurf.getHeight();
-
-                if (!(srcSurf instanceof ImageSurface)) {
-                    compIm = xDstSurf.g2d.xConfig.createCompatibleImage(w, h);
-
-                    NativeImageBlitter.getInstance().blit(
-                            srcX, srcY, srcSurf,
-                            srcX, srcY,
-                            AwtImageBackdoorAccessor.getInstance().getImageSurface(compIm),
-                            w, h,
-                            AlphaComposite.Src, null, null
-                    );
-                } else {
-                    ColorModel cm = srcSurf.getColorModel();
-                    compIm = new BufferedImage(
-                            cm,
-                            srcSurf.getRaster(),
-                            cm.isAlphaPremultiplied(),
-                            null
-                    );
-                }
-
-                WritableRaster compRaster = compIm.getRaster();
-
                 AffineTransform at = (AffineTransform) sysxform.clone();
 
-                AffineTransformOp atop =
-                        new AffineTransformOp(at, xDstSurf.g2d.getRenderingHints());
-
-                Rectangle r = atop.getBounds2D(compRaster).getBounds();
-                int tWidth = r.width;
-                int tHeight = r.height;
+                Rectangle transDstBounds = JavaBlitter.getBounds2D(at, new Rectangle(dstX, dstY, width, height)).getBounds();
+                int tWidth = transDstBounds.width;
+                int tHeight = transDstBounds.height;
+                dstX = transDstBounds.x;
+                dstY = transDstBounds.y;
+
+                ColorModel cm = srcSurf.getColorModel();
+                WritableRaster compRaster = srcSurf.getRaster();
+                BufferedImage compIm = new BufferedImage(
+                        cm,
+                        compRaster,
+                        cm.isAlphaPremultiplied(),
+                        null
+                );
 
-                BufferedImage transformed;
-                if (compIm.getColorModel().getTransparency() == Transparency.OPAQUE) {
-                    transformed = xDstSurf.g2d.xConfig.createCompatibleImage(tWidth, tHeight);
-                } else {
-                    ColorModel cm = compIm.getColorModel();
-                    transformed =
-                            new BufferedImage(
-                                    cm,
-                                    compIm.getRaster().createCompatibleWritableRaster(
-                                            tWidth,
-                                            tHeight
-                                    ),
-                                    cm.isAlphaPremultiplied(),
-                                    null
-                            );
-                }
+                BufferedImage transformed = new BufferedImage(tWidth, tHeight, BufferedImage.TYPE_INT_ARGB);
 
-                atop.filter(compIm, transformed);
+                Surface transfSurf = Surface.getImageSurface(transformed);
+                JavaBlitter.getInstance().blit(srcX, srcY, Surface.getImageSurface(compIm), 
+                        0, 0, transfSurf, width, height, at, AlphaComposite.Src, null, null);
 
                 if (dstX < 0){
                     tWidth += dstX;
+                    srcX = -dstX;
                     dstX = 0;
                 }
 
                 if (dstY < 0){
                     tHeight += dstY;
+                    srcY = -dstY;
                     dstY = 0;
                 }
 
+                if(tWidth <= 0 || tHeight <= 0 || srcX >= tWidth || srcY >= tHeight) return;
                 blit(
-                        0, 0, AwtImageBackdoorAccessor.getInstance().getImageSurface(transformed),
+                        srcX, srcY, transfSurf,
                         dstX, dstY, dstSurf,
                         tWidth, tHeight,
                         comp, bgcolor, clip
                 );
+
         }
     }
 
@@ -248,6 +222,7 @@
             int width, int height,
             Composite comp, Color bgcolor, MultiRectArea clip
     ) {
+
         if (clip == null) {
             clip = new MultiRectArea(new Rectangle(dstX, dstY, width, height));
         } else {
@@ -298,7 +273,8 @@
                 makeClip(dstX, dstY, width, height, clip);
 
                 g2d.setXClip(clip, g2d.imageGC);
-                X11.getInstance().XCopyArea(
+                X11 x11 = X11.getInstance(); 
+                x11.XCopyArea(
                         g2d.display,
                         xSrcSurf.g2d.drawable, g2d.drawable,
                         g2d.imageGC,
@@ -306,6 +282,7 @@
                         width, height,
                         dstX, dstY
                 );
+                x11.XFlush(g2d.display);
                 g2d.resetXClip(g2d.imageGC);
 
                 g2d.setImageGCFunction(X11Defs.GXcopy);
@@ -384,8 +361,10 @@
             MultiRectArea clip
     ) {
         XSurface xDstSurf = ((XSurface) dstSurf);
+
         boolean srcNoAlpha =
                 srcSurf.getColorModel().getTransparency() == Transparency.OPAQUE;
+
         if (comp instanceof AlphaComposite) {
             AlphaComposite acomp = (AlphaComposite) comp;
             if (
@@ -400,28 +379,27 @@
             }
         }
 
-        AffineTransform t = xDstSurf.g2d.getTransform();
-        int tx = (int) t.getTranslateX();
-        int ty = (int) t.getTranslateY();
-
-        if (xDstSurf.needServerData) {
-            xDstSurf.setRoi(new Rectangle2D.Float(dstX - tx, dstY - ty, width, height));
-        }
-
-        clip.translate(-tx, -ty);
-
+        Rectangle2D roi = new Rectangle2D.Float(dstX, dstY, width, height); 
+        xDstSurf.setRoi(roi);
         NativeImageBlitter.getInstance().blit(
                 srcX, srcY, srcSurf,
-                dstX - tx, dstY - ty, xDstSurf.getImageSurface(),
+                0, 0, xDstSurf.getImageSurface(),
                 width, height,
-                comp, bgcolor, clip
+                comp, bgcolor, null
         );
 
-        clip.translate(tx, ty);
+        if (xDstSurf.needServerData) {
+            xDstSurf.putImage(clip,
+                    (int) (roi.getX()),
+                    (int) (roi.getY()),
+                    (int) roi.getWidth(), 
+                    (int) roi.getHeight()
+            );
+
+        } else {
+            xDstSurf.putImage(clip, dstX, dstY, width, height);
+        }
 
-        // Get translated clip
-        makeClip(dstX, dstY, width, height, clip);
-        xDstSurf.putImage(clip);
         xDstSurf.needServerData = true;
     }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java Mon Aug 27 03:43:59 2007
@@ -100,8 +100,8 @@
                     g2d.drawable,
                     pixmap,
                     g2d.imageGC,
-                    (int) (g2d.getTransform().getTranslateX() + roi.getX()),
-                    (int) (g2d.getTransform().getTranslateY() + roi.getY()),
+                    (int) roi.getX(),
+                    (int) roi.getY(),
                     (int) roi.getWidth(), (int) roi.getHeight(),
                     0, 0
             );
@@ -155,11 +155,9 @@
                     (int) roi.getWidth(), (int) roi.getHeight(),
                     ~(0L), // All bits set to 1, should be same as XAllPlanes() result
                     X11Defs.ZPixmap,
-                    xImage,
-                    (int) (roi.getX()),
-                    (int) (roi.getY())
+                    xImage, 0, 0
             );
-
+            x11.XFreePixmap(g2d.display, pixmap);
             lastSnapshot = XVolatileImage.biFromXImage(xImage, g2d.xConfig);
 
             // Cleanup
@@ -167,16 +165,15 @@
         } else {
             lastSnapshot = g2d.xConfig.createCompatibleImage(width, height);
         }
+
         return lastSnapshot.getRaster();
     }
 
-    void putImage(MultiRectArea clip) {
+    void putImage(MultiRectArea clip, int x, int y, int width, int height) {
         putImage(
                 clip,
                 lastSnapshot.getRaster(),
-                (int) g2d.getTransform().getTranslateX(),
-                (int) g2d.getTransform().getTranslateY(),
-                width, height
+                x, y, width, height 
         );
     }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/geom/AreaTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/geom/AreaTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/geom/AreaTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/awt/src/test/api/java/common/java/awt/geom/AreaTest.java Mon Aug 27 03:43:59 2007
@@ -174,6 +174,24 @@
          checkPathRule(path, PathIterator.WIND_EVEN_ODD);
          checkPathDone(path, true);
      }
+     
+     public void testSubtract() {
+         // Regression test HARMONY-4410
+ 		Rectangle2D rect1 = new Rectangle2D.Double(300, 300, 200, 150);
+		Rectangle2D rect2 = new Rectangle2D.Double(350, 200, 300, 150);
+
+		Area area1 = new Area(rect1);
+		Area area2 = new Area(rect2);
+
+		Area a = (Area) area1.clone();
+		a.intersect(area2);
+		area1.add(area2);
+		area1.subtract(a);
+		
+		assertFalse(area1.contains(375, 325));
+		assertTrue(area1.contains(600, 300));
+		assertTrue(area1.contains(325, 325));
+     }
 
     public static void main(String[] args) {
         junit.textui.TestRunner.run(AreaTest.class);

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/EventSetDescriptor.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/EventSetDescriptor.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/EventSetDescriptor.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/EventSetDescriptor.java Mon Aug 27 03:43:59 2007
@@ -218,7 +218,7 @@
         String eventTypeName = prepareEventTypeName(eventSetName);
 
         if (params.length > 0) {
-            firstParamTypeName = BeanInfoImpl.extractShortClassName(params[0]
+            firstParamTypeName = extractShortClassName(params[0]
                     .getName());
         }
 
@@ -227,6 +227,17 @@
             throw new IntrospectionException(Messages.getString("beans.51", //$NON-NLS-1$
                     listenerMethod.getName(), eventTypeName));
         }
+    }
+
+    /**
+     * @param fullClassName full name of the class
+     * @return name with package and encapsulating class info omitted 
+     */
+    static String extractShortClassName(String fullClassName) {
+        int k = fullClassName.lastIndexOf('$');
+        
+        k = (k == -1 ? fullClassName.lastIndexOf('.') : k);
+        return fullClassName.substring(k + 1);
     }
 
     private static String prepareEventTypeName(String eventSetName) {

Modified: harmony/enhanced/classlib/branches/java6/modules/logging/src/main/java/java/util/logging/Logger.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/logging/src/main/java/java/util/logging/Logger.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/logging/src/main/java/java/util/logging/Logger.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/logging/src/main/java/java/util/logging/Logger.java Mon Aug 27 03:43:59 2007
@@ -446,9 +446,12 @@
                     if (null == handlerStr) {
                         return;
                     }
-                    StringTokenizer st = new StringTokenizer(handlerStr, " "); //$NON-NLS-1$
-                    while (st.hasMoreTokens()) {
-                        String handlerName = st.nextToken();
+                    String[] strs = handlerStr.split(",|\\s");
+                    for (int i = 0; i < strs.length; i++) {
+                        String handlerName = strs[i];
+                        if (handlerName.equals("")){
+                            continue;
+                        }
                         Handler handler = (Handler) LogManager
                                 .getInstanceByClass(handlerName);
                         handlers.add(handler);

Modified: harmony/enhanced/classlib/branches/java6/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java Mon Aug 27 03:43:59 2007
@@ -17,6 +17,8 @@
 
 package org.apache.harmony.logging.tests.java.util.logging;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.security.Permission;
 import java.util.Locale;
 import java.util.MissingResourceException;
@@ -50,6 +52,8 @@
 	private final static String VALID_RESOURCE_BUNDLE3 = "bundles/java/util/logging/res3";
 
 	private final static String INVALID_RESOURCE_BUNDLE = "impossible_not_existing";
+    
+    private final static String LOGGING_CONFIG_FILE= "src/test/resources/config/java/util/logging/logging.config";
 
 	private final static String VALID_KEY = "LOGGERTEST";
 
@@ -3451,6 +3455,20 @@
         } finally {
             System.setSecurityManager(originalSecurityManager);
         }
+    }
+    
+    /*
+     * test initHandler
+     */
+    public void test_initHandler() throws Exception {
+        File logProps = new File(LOGGING_CONFIG_FILE);
+        LogManager lm = LogManager.getLogManager();
+        lm.readConfiguration(new FileInputStream(logProps));
+
+        Logger log = Logger.getLogger("");
+        // can log properly
+        Handler[] handlers = log.getHandlers();
+        assertEquals(2, handlers.length);
     }
 
 	/*

Modified: harmony/enhanced/classlib/branches/java6/modules/logging/src/test/resources/config/java/util/logging/logging.config
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/logging/src/test/resources/config/java/util/logging/logging.config?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/logging/src/test/resources/config/java/util/logging/logging.config (original)
+++ harmony/enhanced/classlib/branches/java6/modules/logging/src/test/resources/config/java/util/logging/logging.config Mon Aug 27 03:43:59 2007
@@ -1,3 +1,3 @@
-handlers=org.apache.harmony.logging.tests.java.util.logging.LogManagerTest$MockHandler java.util.logging.ConsoleHandler
+handlers=org.apache.harmony.logging.tests.java.util.logging.LogManagerTest$MockHandler ,  java.util.logging.ConsoleHandler
 .level=ALL
 org.apache.harmony.logging.tests.java.util.logging.LogManagerTest$MockHandler.level=OFF

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/File.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/File.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/File.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/File.java Mon Aug 27 03:43:59 2007
@@ -21,6 +21,7 @@
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.security.AccessController;
+import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -1310,7 +1311,7 @@
 
     private static File genTempFile(String prefix, String suffix, File directory) {
         if (counter == 0) {
-            int newInt = new java.util.Random().nextInt();
+            int newInt = new SecureRandom().nextInt();
             counter = ((newInt / 65535) & 0xFFFF) + 0x2710;
         }
         StringBuilder newName = new StringBuilder();

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectInputStream.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectInputStream.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectInputStream.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectInputStream.java Mon Aug 27 03:43:59 2007
@@ -1618,9 +1618,7 @@
         Integer oldHandle = descriptorHandle;
         descriptorHandle = Integer.valueOf(nextHandle());
         classDesc = readClassDescriptor();
-        if (descriptorHandle != null) {
-            registerObjectRead(classDesc, descriptorHandle, false);
-        }
+        registerObjectRead(classDesc, descriptorHandle, false);
         descriptorHandle = oldHandle;
         primitiveData = emptyStream;
         classDesc.setClass(resolveClass(classDesc));
@@ -1700,9 +1698,7 @@
         Integer oldHandle = descriptorHandle;
         descriptorHandle = Integer.valueOf(nextHandle());
         ObjectStreamClass newClassDesc = readClassDescriptor();
-        if (descriptorHandle != null) {
-            registerObjectRead(newClassDesc, descriptorHandle, unshared);
-        }
+        registerObjectRead(newClassDesc, descriptorHandle, unshared);
         descriptorHandle = oldHandle;
         primitiveData = emptyStream;
 
@@ -1792,7 +1788,6 @@
         descriptorHandle = (null == descriptorHandle ? Integer
                 .valueOf(nextHandle()) : descriptorHandle);
         registerObjectRead(newClassDesc, descriptorHandle, false);
-        descriptorHandle = null;
 
         readFieldDescriptors(newClassDesc);
         return newClassDesc;

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectStreamClass.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectStreamClass.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectStreamClass.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/io/ObjectStreamClass.java Mon Aug 27 03:43:59 2007
@@ -232,6 +232,23 @@
             result.setFields(new ObjectStreamField[0]);
         }
 
+        // Copy all fields to loadFields - they should be read by default in
+        // ObjectInputStream.defaultReadObject() method
+        ObjectStreamField[] fields = result.getFields();
+    
+        if (fields != null) {
+            ObjectStreamField[] loadFields = new ObjectStreamField[fields.length];
+
+            for (int i = 0; i < fields.length; ++i) {
+                loadFields[i] = new ObjectStreamField(fields[i].getName(),
+                        fields[i].getType(), fields[i].isUnshared());
+
+                // resolve type string to init typeString field in ObjectStreamField
+                loadFields[i].getTypeString();
+            }
+            result.setLoadFields(loadFields);
+        }
+
         byte flags = 0;
         boolean externalizable = isExternalizable(cl);
         if (externalizable) {

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/lang/Character.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/lang/Character.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/lang/Character.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/lang/Character.java Mon Aug 27 03:43:59 2007
@@ -1815,7 +1815,7 @@
             int mid = -1;
             int high = BLOCKS.length - 1;
             while (low <= high) {
-                mid = (low + high) >> 1;
+                mid = (low + high) >>> 1;
                 UnicodeBlock block = BLOCKS[mid];
                 if (codePoint > block.end) {
                     low = mid + 1;

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Arrays.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Arrays.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Arrays.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Arrays.java Mon Aug 27 03:43:59 2007
@@ -341,7 +341,7 @@
         checkIndexForBinarySearch(array.length, startIndex, endIndex);
         int low = startIndex, mid = -1, high = endIndex - 1;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if (value > array[mid]) {
                 low = mid + 1;
             } else if (value == array[mid]) {
@@ -382,7 +382,7 @@
         checkIndexForBinarySearch(array.length, startIndex, endIndex);
         int low = startIndex, mid = -1, high = endIndex - 1;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if (value > array[mid]) {
                 low = mid + 1;
             } else if (value == array[mid]) {
@@ -424,7 +424,7 @@
         long longBits = Double.doubleToLongBits(value);
         int low = startIndex, mid = -1, high = endIndex - 1;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if (lessThan(array[mid], value)) {
                 low = mid + 1;
             } else if (longBits == Double.doubleToLongBits(array[mid])) {
@@ -466,7 +466,7 @@
         int intBits = Float.floatToIntBits(value);
         int low = startIndex, mid = -1, high = endIndex - 1;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if (lessThan(array[mid], value)) {
                 low = mid + 1;
             } else if (intBits == Float.floatToIntBits(array[mid])) {
@@ -507,7 +507,7 @@
         checkIndexForBinarySearch(array.length, startIndex, endIndex);
         int low = startIndex, mid = -1, high = endIndex - 1;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if (value > array[mid]) {
                 low = mid + 1;
             } else if (value == array[mid]) {
@@ -548,7 +548,7 @@
         checkIndexForBinarySearch(array.length, startIndex, endIndex);
         int low = startIndex, mid = -1, high = endIndex - 1;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if (value > array[mid]) {
                 low = mid + 1;
             } else if (value == array[mid]) {
@@ -597,7 +597,7 @@
         Comparable<Object> key = (Comparable<Object>) object;
         int low = startIndex, mid = 0, high = endIndex - 1, result = 0;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if ((result = key.compareTo(array[mid])) > 0) {
                 low = mid + 1;
             } else if (result == 0) {
@@ -646,7 +646,7 @@
 
         int low = startIndex, mid = 0, high = endIndex - 1, result = 0;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if ((result = comparator.compare(array[mid], object)) < 0) {
                 low = mid + 1;
             } else if (result == 0) {
@@ -684,7 +684,7 @@
         checkIndexForBinarySearch(array.length, startIndex, endIndex);
         int low = startIndex, mid = -1, high = endIndex - 1;
         while (low <= high) {
-            mid = (low + high) >> 1;
+            mid = (low + high) >>> 1;
             if (value > array[mid]) {
                 low = mid + 1;
             } else if (value == array[mid]) {
@@ -2695,7 +2695,7 @@
             }
             return;
         }
-        int med = (end + start) >> 1;
+        int med = (end + start) >>> 1;
         mergeSort(out, in, start, med);
         mergeSort(out, in, med, end);
 
@@ -2777,7 +2777,7 @@
             }
             return;
         }
-        int med = (end + start) >> 1;
+        int med = (end + start) >>> 1;
         mergeSort(out, in, start, med, c);
         mergeSort(out, in, med, end, c);
 
@@ -2859,7 +2859,7 @@
             d <<= 1;
         }
         while (l <= r) {
-            m = (l + r) >> 1;
+            m = (l + r) >>> 1;
             if (val.compareTo(arr[m]) > bnd) {
                 l = m + 1;
             } else {
@@ -2905,7 +2905,7 @@
             d <<= 1;
         }
         while (l <= r) {
-            m = (l + r) >> 1;
+            m = (l + r) >>> 1;
             if (c.compare(val, arr[m]) > bnd) {
                 l = m + 1;
             } else {

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/LinkedHashMap.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/LinkedHashMap.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/LinkedHashMap.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/LinkedHashMap.java Mon Aug 27 03:43:59 2007
@@ -17,17 +17,19 @@
 
 package java.util;
 
-
 /**
- * LinkedHashMap is a variant on HashMap. Its entries are kept in a doubly-linked list.
- * The iteration order is, by default, the order in which keys were inserted.
- * <p> 
- * If the three argument constructor is used, and <code>order</code> is specified as <code>true</code>, 
- * the iteration would be in the order that entries were accessed. The access order gets 
- * affected by put(), get(), putAll() operations, but not by operations on the collection views.
+ * LinkedHashMap is a variant on HashMap. Its entries are kept in a
+ * doubly-linked list. The iteration order is, by default, the order in which
+ * keys were inserted.
+ * <p>
+ * If the three argument constructor is used, and <code>order</code> is
+ * specified as <code>true</code>, the iteration would be in the order that
+ * entries were accessed. The access order gets affected by put(), get(),
+ * putAll() operations, but not by operations on the collection views.
  * <p>
  * Null elements are allowed, and all the optional Map operations are supported.
  * <p>
+ * 
  * @since 1.4
  */
 public class LinkedHashMap<K, V> extends HashMap<K, V> {
@@ -105,8 +107,10 @@
         putAll(m);
     }
 
-    static final class LinkedHashIterator<E, KT, VT> extends HashMapIterator<E, KT, VT> {
-        LinkedHashIterator(MapEntry.Type<E, KT, VT> value, LinkedHashMap<KT, VT> hm) {
+    static final class LinkedHashIterator<E, KT, VT> extends
+            HashMapIterator<E, KT, VT> {
+        LinkedHashIterator(MapEntry.Type<E, KT, VT> value,
+                LinkedHashMap<KT, VT> hm) {
             super(value, hm);
             entry = hm.head;
         }
@@ -124,7 +128,7 @@
             }
             E result = type.get(entry);
             lastEntry = entry;
-            entry = ((LinkedHashMapEntry<KT, VT>)entry).chainForward;
+            entry = ((LinkedHashMapEntry<KT, VT>) entry).chainForward;
             canRemove = true;
             return result;
         }
@@ -139,7 +143,9 @@
             canRemove = false;
             associatedMap.modCount++;
 
-            int index = (lastEntry.key == null)? 0 : (lastEntry.key.hashCode() & 0x7FFFFFFF) % associatedMap.elementData.length;
+            int index = (lastEntry.key == null) ? 0
+                    : (lastEntry.key.hashCode() & 0x7FFFFFFF)
+                            % associatedMap.elementData.length;
             LinkedHashMapEntry<KT, VT> m = (LinkedHashMapEntry<KT, VT>) associatedMap.elementData[index];
             if (m == lastEntry) {
                 associatedMap.elementData[index] = lastEntry.next;
@@ -177,18 +183,20 @@
         }
     }
 
-    static final class LinkedHashMapEntrySet<KT, VT> extends HashMapEntrySet<KT, VT> {
+    static final class LinkedHashMapEntrySet<KT, VT> extends
+            HashMapEntrySet<KT, VT> {
         public LinkedHashMapEntrySet(LinkedHashMap<KT, VT> lhm) {
             super(lhm);
         }
 
         @Override
-        public Iterator<Map.Entry<KT,VT>> iterator() {
-            return new LinkedHashIterator<Map.Entry<KT,VT>,KT,VT>(new MapEntry.Type<Map.Entry<KT,VT>, KT, VT>() {
-                public Map.Entry<KT,VT> get(MapEntry<KT,VT> entry) {
-                    return entry;
-                }
-            }, (LinkedHashMap<KT, VT>) hashMap());
+        public Iterator<Map.Entry<KT, VT>> iterator() {
+            return new LinkedHashIterator<Map.Entry<KT, VT>, KT, VT>(
+                    new MapEntry.Type<Map.Entry<KT, VT>, KT, VT>() {
+                        public Map.Entry<KT, VT> get(MapEntry<KT, VT> entry) {
+                            return entry;
+                        }
+                    }, (LinkedHashMap<KT, VT>) hashMap());
         }
     }
 
@@ -207,11 +215,11 @@
             chainBackward = null;
         }
 
-
         @Override
         @SuppressWarnings("unchecked")
         public Object clone() {
-            LinkedHashMapEntry<K, V> entry = (LinkedHashMapEntry<K, V>) super.clone();
+            LinkedHashMapEntry<K, V> entry = (LinkedHashMapEntry<K, V>) super
+                    .clone();
             entry.chainBackward = chainBackward;
             entry.chainForward = chainForward;
             LinkedHashMapEntry<K, V> lnext = (LinkedHashMapEntry<K, V>) entry.next;
@@ -221,7 +229,7 @@
             return entry;
         }
     }
-    
+
     /**
      * Searches this map for the specified value.
      * 
@@ -274,11 +282,11 @@
     public V get(Object key) {
         LinkedHashMapEntry<K, V> m;
         if (key == null) {
-            m = (LinkedHashMapEntry<K, V>)findNullKeyEntry();
+            m = (LinkedHashMapEntry<K, V>) findNullKeyEntry();
         } else {
             int hash = key.hashCode();
             int index = (hash & 0x7FFFFFFF) % elementData.length;
-            m = (LinkedHashMapEntry<K, V>)findNonNullKeyEntry(key, index, hash);
+            m = (LinkedHashMapEntry<K, V>) findNonNullKeyEntry(key, index, hash);
         }
         if (m == null) {
             return null;
@@ -312,7 +320,7 @@
         return m;
     }
 
-    Entry<K,V> createHashedEntry(K key, int index, int hash) {
+    Entry<K, V> createHashedEntry(K key, int index, int hash) {
         LinkedHashMapEntry<K, V> m = new LinkedHashMapEntry<K, V>(key, hash);
         m.next = elementData[index];
         elementData[index] = m;
@@ -332,7 +340,7 @@
      */
     @Override
     public V put(K key, V value) {
-        V result = putImpl(key,value);
+        V result = putImpl(key, value);
 
         if (removeEldestEntry(head)) {
             remove(head.key);
@@ -340,38 +348,38 @@
 
         return result;
     }
-    
-    V putImpl(K key, V value){
+
+    V putImpl(K key, V value) {
         LinkedHashMapEntry<K, V> m;
-        if (elementCount == 0){
+        if (elementCount == 0) {
             head = tail = null;
         }
         if (key == null) {
-            m = (LinkedHashMapEntry<K, V>)findNullKeyEntry();
+            m = (LinkedHashMapEntry<K, V>) findNullKeyEntry();
             if (m == null) {
                 modCount++;
-                // Check if we need to remove the oldest entry
-                // The check includes accessOrder since an accessOrder LinkedHashMap
-                // does not record
-                // the oldest member in 'head'.
+                // Check if we need to remove the oldest entry. The check
+                // includes accessOrder since an accessOrder LinkedHashMap does
+                // not record the oldest member in 'head'.
                 if (++elementCount > threshold) {
                     rehash();
                 }
-                    m = (LinkedHashMapEntry<K, V>) createHashedEntry(key, 0, 0);
+                m = (LinkedHashMapEntry<K, V>) createHashedEntry(null, 0, 0);
             } else {
                 linkEntry(m);
             }
         } else {
             int hash = key.hashCode();
             int index = (hash & 0x7FFFFFFF) % elementData.length;
-            m = (LinkedHashMapEntry<K, V>)findNonNullKeyEntry(key, index, hash);
-            if (m == null) {                
+            m = (LinkedHashMapEntry<K, V>) findNonNullKeyEntry(key, index, hash);
+            if (m == null) {
                 modCount++;
                 if (++elementCount > threshold) {
                     rehash();
                     index = (hash & 0x7FFFFFFF) % elementData.length;
                 }
-                m = (LinkedHashMapEntry<K, V>) createHashedEntry(key, index, hash);
+                m = (LinkedHashMapEntry<K, V>) createHashedEntry(key, index,
+                        hash);
             } else {
                 linkEntry(m);
             }
@@ -435,7 +443,6 @@
             tail.chainForward = m;
             tail = m;
         }
-
     }
 
     /**
@@ -487,11 +494,12 @@
 
                 @Override
                 public Iterator<K> iterator() {
-                    return new LinkedHashIterator<K,K,V>(new MapEntry.Type<K,K,V>() {
-                        public K get(MapEntry<K,V> entry) {
-                            return entry.key;
-                        }
-                    }, LinkedHashMap.this);
+                    return new LinkedHashIterator<K, K, V>(
+                            new MapEntry.Type<K, K, V>() {
+                                public K get(MapEntry<K, V> entry) {
+                                    return entry.key;
+                                }
+                            }, LinkedHashMap.this);
                 }
             };
         }
@@ -526,11 +534,12 @@
 
                 @Override
                 public Iterator<V> iterator() {
-                    return new LinkedHashIterator<V,K,V>(new MapEntry.Type<V,K,V>() {
-                        public V get(MapEntry<K,V> entry) {
-                            return entry.value;
-                        }
-                    }, LinkedHashMap.this);
+                    return new LinkedHashIterator<V, K, V>(
+                            new MapEntry.Type<V, K, V>() {
+                                public V get(MapEntry<K, V> entry) {
+                                    return entry.value;
+                                }
+                            }, LinkedHashMap.this);
                 }
             };
         }
@@ -575,7 +584,7 @@
      * @param eldest
      * @return true if the eldest member should be removed
      */
-    protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
+    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
         return false;
     }
 
@@ -590,5 +599,4 @@
         super.clear();
         head = tail = null;
     }
-
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Locale.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Locale.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Locale.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/Locale.java Mon Aug 27 03:43:59 2007
@@ -46,7 +46,7 @@
 	
 	private static final long serialVersionUID = 9149081749638150636L;
 
-	private static Locale[] availableLocales;
+	private static volatile Locale[] availableLocales;
 
 	// Initialize a default which is used during static
 	// initialization of the default for the platform.

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSMemory.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSMemory.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSMemory.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSMemory.java Mon Aug 27 03:43:59 2007
@@ -122,7 +122,12 @@
 	 * @throws OutOfMemoryError
 	 *             if the request cannot be satisfied.
 	 */
-	public native long malloc(long length) throws OutOfMemoryError;
+	public long malloc(long length) throws OutOfMemoryError
+    {
+        OSResourcesMonitor.ensurePhysicalMemoryCapacity();
+        return mallocNative(length);  
+    }
+    private native long mallocNative(long length) throws OutOfMemoryError;
 
 	/**
 	 * Deallocates space for a memory block that was previously allocated by a

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.c?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.c (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.c Mon Aug 27 03:43:59 2007
@@ -29,7 +29,7 @@
 #include "IMemorySystem.h"
 #include "exceptions.h"
 
-JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_malloc
+JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_mallocNative
   (JNIEnv * env, jobject thiz, jlong size)
 {
   PORT_ACCESS_FROM_ENV (env);

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.h?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.h (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/OSMemory.h Mon Aug 27 03:43:59 2007
@@ -43,10 +43,10 @@
     (JNIEnv *, jclass);
 /*
  * Class:     org_apache_harmony_luni_platform_OSMemory
- * Method:    malloc
+ * Method:    mallocNative
  * Signature: (J)J
  */
-  JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_malloc
+  JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_mallocNative
     (JNIEnv *, jobject, jlong);
 /*
  * Class:     org_apache_harmony_luni_platform_OSMemory

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/exports.txt
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/exports.txt?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/exports.txt (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/exports.txt Mon Aug 27 03:43:59 2007
@@ -190,7 +190,7 @@
 Java_org_apache_harmony_luni_platform_OSMemory_getPointerSizeImpl
 Java_org_apache_harmony_luni_platform_OSMemory_getAddress
 Java_org_apache_harmony_luni_platform_OSMemory_setAddress
-Java_org_apache_harmony_luni_platform_OSMemory_malloc
+Java_org_apache_harmony_luni_platform_OSMemory_mallocNative
 Java_org_apache_harmony_luni_platform_OSMemory_free
 Java_org_apache_harmony_luni_platform_OSMemory_memmove
 Java_org_apache_harmony_luni_platform_OSMemory_memset
@@ -258,6 +258,7 @@
 Java_org_apache_harmony_luni_platform_OSNetworkSystem_isReachableByICMPImpl
 Java_org_apache_harmony_luni_platform_OSNetworkSystem_inheritedChannelImpl
 Java_org_apache_harmony_luni_platform_OSNetworkSystem_oneTimeInitializationImpl
+Java_org_apache_harmony_luni_platform_OSResourcesMonitor_isSystemPhysicalMemoryLow
 Java_org_apache_harmony_luni_platform_Environment_getEnvBytes
 Java_org_apache_harmony_luni_platform_Environment_getEnvByName
 Java_java_io_File_setExecutableImpl

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/makefile
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/makefile?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/makefile (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/unix/makefile Mon Aug 27 03:43:59 2007
@@ -34,7 +34,7 @@
 	$(SHAREDSUB)filedesc.o $(SHAREDSUB)timezone.o \
 	$(SHAREDSUB)OSFileSystem.o OSFileSystemLinux32.o \
 	OSMemory.o OSMemoryLinux32.o $(SHAREDSUB)OSNetworkSystem.o \
-	OSNetworkSystemLinux.o hyenv.o
+	OSNetworkSystemLinux.o OSResourcesMonitorLinux.o hyenv.o 
 
 ifneq ($(HY_ZIP_API),true)
 MDLLIBFILES += $(LIBPATH)libhyzip.a $(DLLPATH)libhyzlib$(HY_LINKLIB_SUFFIX)

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.c?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.c (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.c Mon Aug 27 03:43:59 2007
@@ -24,7 +24,7 @@
 #include "IMemorySystem.h"
 #include "exceptions.h"
 
-JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_malloc
+JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_mallocNative
   (JNIEnv * env, jobject thiz, jlong size)
 {
   PORT_ACCESS_FROM_ENV (env);

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.h?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.h (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/OSMemory.h Mon Aug 27 03:43:59 2007
@@ -41,10 +41,10 @@
     (JNIEnv *, jclass);
 /*
  * Class:     org_apache_harmony_luni_platform_OSMemory
- * Method:    malloc
+ * Method:    mallocNative
  * Signature: (J)J
  */
-  JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_malloc
+  JNIEXPORT jlong JNICALL Java_org_apache_harmony_luni_platform_OSMemory_mallocNative
     (JNIEnv *, jobject, jlong);
 /*
  * Class:     org_apache_harmony_luni_platform_OSMemory

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/makefile
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/makefile?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/makefile (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/luni/windows/makefile Mon Aug 27 03:43:59 2007
@@ -37,7 +37,8 @@
   $(SHAREDSUB)filedesc.obj $(SHAREDSUB)timezone.obj \
   OSFileSystemWin32.obj hyenv.obj\
   $(SHAREDSUB)OSFileSystem.obj OSMemoryWin32.obj OSMemory.obj \
-  $(SHAREDSUB)OSNetworkSystem.obj OSNetworkSystemWin32.obj
+  $(SHAREDSUB)OSNetworkSystem.obj OSNetworkSystemWin32.obj \
+  OSResourcesMonitorWin32.obj
 
 VIRTFILES = hyluni.res
 

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/ObjectInputStreamTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/ObjectInputStreamTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/ObjectInputStreamTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/ObjectInputStreamTest.java Mon Aug 27 03:43:59 2007
@@ -32,12 +32,15 @@
 import java.io.ObjectOutputStream;
 import java.io.ObjectStreamClass;
 import java.io.OutputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
 import java.io.Serializable;
 import java.io.SerializablePermission;
 import java.io.StreamCorruptedException;
 import java.security.Permission;
 import java.util.Arrays;
 import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.Vector;
 
 import org.apache.harmony.testframework.serialization.SerializationTest;
@@ -711,8 +714,7 @@
 		Object obj = ois.readObject();
 		ois.close();
 		assertEquals(cls, obj);
-	}
-        
+	} 
 
 	// Regression Test for JIRA-2340
     public static class ObjectOutputStreamWithWriteDesc1 extends
@@ -921,6 +923,59 @@
         public void setCorrupt(boolean corrupt) {
             this.corrupt = corrupt;
         }
+    }
+
+    public static class ObjectIutputStreamWithReadDesc2 extends
+            ObjectInputStream {
+        private Class returnClass;
+
+        public ObjectIutputStreamWithReadDesc2(InputStream is, Class returnClass)
+                throws IOException {
+            super(is);
+            this.returnClass = returnClass;
+        }
+
+        public ObjectStreamClass readClassDescriptor() throws IOException,
+                ClassNotFoundException {
+            ObjectStreamClass osc = super.readClassDescriptor();
+
+            if (osc.getName().equals(returnClass.getName())) {
+                return ObjectStreamClass.lookup(returnClass);
+            }
+            return osc;
+        }
+    }
+
+    /*
+     * Testing classDescriptor replacement with the value generated by
+     * ObjectStreamClass.lookup() method.
+     * Regression test for HARMONY-4638
+     */
+    public void test_readClassDescriptor_1() throws IOException, ClassNotFoundException {
+        A a = new A();
+        a.name = "It's a test";
+        PipedOutputStream pout = new PipedOutputStream();
+        PipedInputStream pin = new PipedInputStream(pout);
+        ObjectOutputStream out = new ObjectOutputStream(pout);
+        ObjectInputStream in = new ObjectIutputStreamWithReadDesc2(pin, A.class);
+
+        // test single object
+        out.writeObject(a);
+        A a1 = (A) in.readObject();
+        assertEquals("Single case: incorrectly read the field of A", a.name, a1.name);
+
+        // test cyclic reference
+        HashMap m = new HashMap();
+        a = new A();
+        a.name = "It's a test 0";
+        a1 = new A();
+        a1.name = "It's a test 1";
+        m.put("0", a);
+        m.put("1", a1);
+        out.writeObject(m);
+        HashMap m1 = (HashMap) in.readObject();
+        assertEquals("Incorrectly read the field of A", a.name, ((A) m1.get("0")).name);
+        assertEquals("Incorrectly read the field of A1", a1.name, ((A) m1.get("1")).name);
     }
 
     public void test_registerValidation() throws Exception {

Modified: harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigDecimal.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigDecimal.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigDecimal.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigDecimal.java Mon Aug 27 03:43:59 2007
@@ -1314,7 +1314,7 @@
         long newScale = scale;
 
         if (isZero()) {
-            return this;
+            return new BigDecimal("0");
         }
         BigInteger strippedBI = getUnscaledValue();
         BigInteger[] quotAndRem;

Modified: harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigInteger.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigInteger.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigInteger.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/BigInteger.java Mon Aug 27 03:43:59 2007
@@ -247,7 +247,7 @@
         if (digits.length == 0) {
             sign = 0;
             numberLength = 1;
-            digits = new int[] { 0 };
+            this.digits = new int[] { 0 };
         } else {
             sign = signum;
             numberLength = digits.length;

Modified: harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/Logical.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/Logical.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/Logical.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/math/src/main/java/java/math/Logical.java Mon Aug 27 03:43:59 2007
@@ -224,12 +224,12 @@
     
     /** @see BigInteger#andNot(BigInteger) */
     static BigInteger andNot(BigInteger val, BigInteger that) {
-        if (val.sign == 0) {
-            return BigInteger.ZERO;
-        }
         if (that.sign == 0 ) {
             return val;
         }
+        if (val.sign == 0) {
+            return BigInteger.ZERO;
+        }
         if (val.equals(BigInteger.MINUS_ONE)) {
             return that.not();
         }
@@ -239,7 +239,7 @@
         
         //if val == that, return 0
         
-                    if (val.sign > 0) {
+       if (val.sign > 0) {
             if (that.sign > 0) {
                 return andNotPositive(val, that);
             } else {

Modified: harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigDecimalTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigDecimalTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigDecimalTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigDecimalTest.java Mon Aug 27 03:43:59 2007
@@ -894,4 +894,27 @@
         assertEquals(bd.doubleValue(), nbd.doubleValue(), 0.0);
         assertEquals(bd.toString(), nbd.toString());
     }
+	
+	/**
+	 * @tests java.math.BigDecimal#stripTrailingZero(long)
+	 */
+	public void test_stripTrailingZero() {
+		BigDecimal sixhundredtest = new BigDecimal("600.0");
+		assertTrue("stripTrailingZero failed for 600.0",
+				((sixhundredtest.stripTrailingZeros()).scale() == -2)
+				);
+		
+		/* Single digit, no trailing zero, odd number */
+		BigDecimal notrailingzerotest = new BigDecimal("1");
+		assertTrue("stripTrailingZero failed for 1",
+				((notrailingzerotest.stripTrailingZeros()).scale() == 0)
+				);
+		
+		/* Zero */
+        //regression for HARMONY-4623, NON-BUG DIFF with RI
+		BigDecimal zerotest = new BigDecimal("0.0000");
+		assertTrue("stripTrailingZero failed for 0.0000",
+				((zerotest.stripTrailingZeros()).scale() == 0)
+				);		
+	}	
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigIntegerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigIntegerTest.java?rev=570061&r1=570060&r2=570061&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigIntegerTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/math/src/test/java/tests/api/java/math/BigIntegerTest.java Mon Aug 27 03:43:59 2007
@@ -857,6 +857,15 @@
 						(i1.testBit(i) && !i2.testBit(i)) == res.testBit(i));
             }
 		}
+        //regression for HARMONY-4653
+        try{
+            BigInteger.ZERO.andNot(null);
+            fail("should throw NPE");
+        }catch(Exception e){
+            //expected
+        }
+        BigInteger bi = new BigInteger(0, new byte[]{});
+        assertEquals(BigInteger.ZERO, bi.andNot(BigInteger.ZERO));
 	}