You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2010/09/21 21:46:00 UTC

svn commit: r999573 [1/4] - in /harmony/enhanced/java/branches/mrh: ./ classlib/ classlib/depends/build/ classlib/depends/files/ classlib/depends/jars/ classlib/depends/manifests/icu4j_4.2.1/META-INF/ classlib/depends/manifests/icu4j_4.4.1.1/ classlib/...

Author: hindessm
Date: Tue Sep 21 19:45:57 2010
New Revision: 999573

URL: http://svn.apache.org/viewvc?rev=999573&view=rev
Log:
Merge changes up to trunk@999306.

Added:
    harmony/enhanced/java/branches/mrh/classlib/depends/manifests/icu4j_4.4.1.1/
      - copied from r998465, harmony/enhanced/java/trunk/classlib/depends/manifests/icu4j_4.4.1.1/
    harmony/enhanced/java/branches/mrh/classlib/depends/manifests/icu4j_4.4.1.1/META-INF/
      - copied from r998465, harmony/enhanced/java/trunk/classlib/depends/manifests/icu4j_4.4.1.1/META-INF/
    harmony/enhanced/java/branches/mrh/classlib/depends/manifests/icu4j_4.4.1.1/META-INF/MANIFEST.MF
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/depends/manifests/icu4j_4.4.1.1/META-INF/MANIFEST.MF
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/PackingOptionsTest.java
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/PackingOptionsTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/java/org/apache/harmony/unpack200/tests/NewAttributeBandsTest.java
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/modules/pack200/src/test/java/org/apache/harmony/unpack200/tests/NewAttributeBandsTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/annotationsRI.jar
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/annotationsRI.jar
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/annotationsRI.pack.gz
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/annotationsRI.pack.gz
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/jndiWithUnknownAttributes.jar
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/jndiWithUnknownAttributes.jar
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/p200WithUnknownAttributes.jar
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/p200WithUnknownAttributes.jar
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/p200WithUnknownAttributes2.jar
      - copied unchanged from r998465, harmony/enhanced/java/trunk/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/p200WithUnknownAttributes2.jar
    harmony/enhanced/java/branches/mrh/ibm-v4/include/
      - copied from r998465, harmony/enhanced/java/trunk/ibm-v4/include/
    harmony/enhanced/java/branches/mrh/ibm-v4/include/jni.h
      - copied unchanged from r998465, harmony/enhanced/java/trunk/ibm-v4/include/jni.h
    harmony/enhanced/java/branches/mrh/ibm-v4/include/jni_types.h
      - copied unchanged from r998465, harmony/enhanced/java/trunk/ibm-v4/include/jni_types.h
    harmony/enhanced/java/branches/mrh/ibm-v4/include/jvmti.h
      - copied unchanged from r998465, harmony/enhanced/java/trunk/ibm-v4/include/jvmti.h
    harmony/enhanced/java/branches/mrh/ibm-v4/include/jvmti_types.h
      - copied unchanged from r998465, harmony/enhanced/java/trunk/ibm-v4/include/jvmti_types.h
Removed:
    harmony/enhanced/java/branches/mrh/classlib/depends/manifests/icu4j_4.2.1/META-INF/MANIFEST.MF
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/native/include/jni.h
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/native/include/jni_types.h
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/native/include/jvmti.h
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/native/include/jvmti_types.h
Modified:
    harmony/enhanced/java/branches/mrh/   (props changed)
    harmony/enhanced/java/branches/mrh/build.xml
    harmony/enhanced/java/branches/mrh/classlib/   (props changed)
    harmony/enhanced/java/branches/mrh/classlib/build.xml
    harmony/enhanced/java/branches/mrh/classlib/depends/build/rules.mak
    harmony/enhanced/java/branches/mrh/classlib/depends/files/bootclasspath.properties
    harmony/enhanced/java/branches/mrh/classlib/depends/jars/   (props changed)
    harmony/enhanced/java/branches/mrh/classlib/make/depends.properties
    harmony/enhanced/java/branches/mrh/classlib/modules/archive/src/main/native/zip/unix/makefile
    harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/main/java/java/beans/StandardBeanInfo.java
    harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IntrospectorTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/instrument/src/main/native/instrument/unix/makefile
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/build.xml
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/io/PipedInputStream.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/Character.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/String.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/net/SocketPermission.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/ArrayList.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/Currency.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/PipedInputStreamTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/FloatTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketPermissionTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ArrayListTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/main/java/java/nio/charset/Charset.java
    harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/main/java/org/apache/harmony/niochar/CharsetProviderImpl.java
    harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/UTF_8.java
    harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/test/java/tests/api/java/nio/charset/UTF8CharsetTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/CPMethodOrField.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/CPNameAndType.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/ClassBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/CpBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/FileBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/IcBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/IntList.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/MetadataBandGroup.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/NewAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/NewAttributeBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/Pack200ClassReader.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/Pack200Exception.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/PackingOptions.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/PopulationCodec.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/pack200/SegmentHeader.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/Archive.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/AttributeLayout.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/BcBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/ClassBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/CpBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/IcTuple.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/MetadataBandGroup.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/NewAttributeBands.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/Segment.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/SegmentHeader.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/SegmentUtils.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/AnnotationsAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPRef.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassConstantPool.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CodeAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/DeprecatedAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/EnclosingMethodAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/LocalVariableTableAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/LocalVariableTypeTableAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/NewAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/OperandManager.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/RuntimeVisibleorInvisibleAnnotationsAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/RuntimeVisibleorInvisibleParameterAnnotationsAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/SignatureAttribute.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/forms/LocalForm.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/forms/LookupSwitchForm.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/forms/SwitchForm.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/forms/TableSwitchForm.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/forms/VariableInstructionForm.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/forms/WideForm.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/ArchiveTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/CodecTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/NewAttributeBandsTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/java/org/apache/harmony/unpack200/tests/ArchiveTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/java/org/apache/harmony/unpack200/tests/SegmentTest.java
    harmony/enhanced/java/branches/mrh/classlib/modules/pack200/src/test/resources/org/apache/harmony/pack200/tests/annotations.jar
    harmony/enhanced/java/branches/mrh/common_resources/   (props changed)
    harmony/enhanced/java/branches/mrh/common_resources/make/depends.xml
    harmony/enhanced/java/branches/mrh/debian/control
    harmony/enhanced/java/branches/mrh/drlvm/   (props changed)
    harmony/enhanced/java/branches/mrh/drlvm/build.xml
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_collect_compact.cpp
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_extend_compact.cpp
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/port/unix/misc/dso.c
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/vmcore/shared/init/harmony.properties
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_properties.cpp
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti.cpp
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMExecutionEngine.cpp
    harmony/enhanced/java/branches/mrh/drlvm/modules/vm/src/main/native/vmcore/shared/util/jarfile_support.cpp
    harmony/enhanced/java/branches/mrh/drlvm/vm/port/include/port_dso.h
    harmony/enhanced/java/branches/mrh/drlvm/vm/port/src/misc/win/dso.c
    harmony/enhanced/java/branches/mrh/drlvm/vm/vmcore/include/jarfile_support.h
    harmony/enhanced/java/branches/mrh/ibm-v4/build.xml
    harmony/enhanced/java/branches/mrh/jdktools/modules/jdktools/src/main/java/org/apache/harmony/tools/jar/Main.java
    harmony/enhanced/java/branches/mrh/jdktools/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java

Propchange: harmony/enhanced/java/branches/mrh/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Sep 21 19:45:57 2010
@@ -1,2 +1,2 @@
 /harmony/enhanced/java/branches/mrh:935751
-/harmony/enhanced/java/trunk:935751-996687
+/harmony/enhanced/java/trunk:935751-999306

Modified: harmony/enhanced/java/branches/mrh/build.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/build.xml?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/build.xml (original)
+++ harmony/enhanced/java/branches/mrh/build.xml Tue Sep 21 19:45:57 2010
@@ -473,7 +473,7 @@ Usage:
     </propertyset>
     
     <target name="build-classlib"
-            depends="init,-build-classlib,assemble-hdk-doc"/>
+            depends="init,-init-hdk,-build-classlib,assemble-hdk-doc"/>
     <target name="-build-classlib" depends="auto-fetch-classlib-libs">
         <ant antfile="classlib/build.xml" target="build" inheritAll="false" >
             <propertyset refid="required.props" />
@@ -547,6 +547,17 @@ Usage:
         </ant>
 -->    </target>
 
+    <target name="-init-hdk">
+        <ant antfile="${vm.dir.loc}/build.xml"
+             target="-init-hdk" inheritall="false" >
+            <propertyset refid="required.props" />
+            <property name="svn.info" value="${harmony.long.version}"/>
+            <property name="svn.revision" value="${harmony.version}"/>
+            <property name="hy.target" location="${hy.target}"/>
+            <property name="common.resources" location="common_resources" />
+        </ant>
+    </target>
+
     <!-- ============================================================== -->
     <!-- ensures that dependencies are up to date and then builds a vm  -->
     <!-- ============================================================== -->
@@ -614,7 +625,7 @@ Usage:
     <!-- ensures dependencies are up to date, then builds jdktools      -->
     <!-- ============================================================== -->
     <target name="build-jdktools"
-            depends="init,auto-fetch-jdktools-libs">
+            depends="init,-init-hdk,auto-fetch-jdktools-libs">
         <ant antfile="jdktools/build.xml" target="build" inheritall="false" >
             <propertyset refid="required.props" />
             <property name="svn.info" value="${harmony.long.version}"/>

Propchange: harmony/enhanced/java/branches/mrh/classlib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Sep 21 19:45:57 2010
@@ -1,4 +1,4 @@
 /harmony/enhanced/classlib/trunk:926318-926838
 /harmony/enhanced/java/branches/mrh/classlib:935751
-/harmony/enhanced/java/trunk/classlib:935751-996687
+/harmony/enhanced/java/trunk/classlib:935751-999306
 /harmony/enhanced/trunk/classlib:476395-926317

Modified: harmony/enhanced/java/branches/mrh/classlib/build.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/build.xml?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/build.xml (original)
+++ harmony/enhanced/java/branches/mrh/classlib/build.xml Tue Sep 21 19:45:57 2010
@@ -223,7 +223,7 @@ module:
         <!-- Copy across the boot dependency jars --><!-- TOFIX clean these? -->
         <copy todir="${hy.jdk}/jre/lib/boot">
             <fileset dir="${depends.jars}">
-                <patternset includes="icu4j_4.2.1/*.jar" />
+                <patternset includes="icu4j_4.4.1.1/*.jar" />
             </fileset>
             <fileset dir="${depends.manifests}"/>
         </copy>

Modified: harmony/enhanced/java/branches/mrh/classlib/depends/build/rules.mak
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/depends/build/rules.mak?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/depends/build/rules.mak (original)
+++ harmony/enhanced/java/branches/mrh/classlib/depends/build/rules.mak Tue Sep 21 19:45:57 2010
@@ -51,7 +51,7 @@ $(DLLNAME): $(LIBNAME)
 	-entry:_DllMainCRTStartup$(DLLENTRY) -dll /BASE:$(DLLBASE) -machine:$(CPU) \
 	-subsystem:windows -out:$@ \
 	-map:$(LIBPATH)$(*F).map -pdb:$(DBGPATH)$(*F).pdb \
-        -manifestfile:$(LIBPATH)$(*F).manifest \
+	-manifest:no \
 	$(BUILDFILES) $(VIRTFILES) $(MDLLIBFILES) $(SYSLIBFILES) \
 	kernel32.lib  msvcrt.lib ws2_32.lib advapi32.lib user32.lib gdi32.lib \
 	comdlg32.lib winspool.lib  $(LIBPATH)$(*F).exp
@@ -65,7 +65,7 @@ $(EXENAME): $(BUILDFILES) $(VIRTFILES) $
 	-mkdir $(DBGPATH)
 	link /NOLOGO $(EXEFLAGS) /debug /opt:icf /opt:ref $(VMLINK) \
 	-out:$(EXENAME) -pdb:$(DBGPATH)$(*F).pdb \
-        -manifestfile:$(LIBPATH)$(*F).manifest \
+	-manifest:no \
 	-machine:$(CPU) setargv.obj  \
 	$(BUILDFILES) $(VIRTFILES) $(MDLLIBFILES) $(EXEDLLFILES)
 	if exist $(LIBPATH)$(*F).manifest \

Modified: harmony/enhanced/java/branches/mrh/classlib/depends/files/bootclasspath.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/depends/files/bootclasspath.properties?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/depends/files/bootclasspath.properties (original)
+++ harmony/enhanced/java/branches/mrh/classlib/depends/files/bootclasspath.properties Tue Sep 21 19:45:57 2010
@@ -161,8 +161,8 @@ bootclasspath.source.packageroot.30=/
 
 # ICU functionality for text/characters are provided by the ICU4J 
 # and ICU4J-charsets JAR files.
-bootclasspath.31=icu4j_4.2.1/icu4j-4_2_1.jar
-bootclasspath.32=icu4j_4.2.1/icu4j-charsets-4_2_1.jar
+bootclasspath.31=icu4j_4.4.1.1/icu4j-4_4_1_1.jar
+bootclasspath.32=icu4j_4.4.1.1/icu4j-charsets-4_4_1_1.jar
 
 # The following JARs are from Xerces/Xalan
 bootclasspath.34=xalan-j_2.7.0/xalan.jar

Propchange: harmony/enhanced/java/branches/mrh/classlib/depends/jars/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Sep 21 19:45:57 2010
@@ -1,14 +1,12 @@
-junit_4.6
+asm-3.1
+bcel-5.2
+bcprov-jdk15-145
+derby-10.3.1.4
 hamcrest-library_1.1
+icu4j_4.4.1.1
+jetty
+junit_4.6
 mx4j_3.0.2
 xalan-j_2.7.0
-bcel-5.2
-jetty
-derby-10.3.1.4
-xerces_2.9.1
-yoko-1.0
-bcprov-jdk15-141
-asm-3.1
-icu4j_4.2.1
-bcprov-jdk15-145
 xerces_2.10.0
+yoko-1.0

Modified: harmony/enhanced/java/branches/mrh/classlib/make/depends.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/make/depends.properties?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/make/depends.properties (original)
+++ harmony/enhanced/java/branches/mrh/classlib/make/depends.properties Tue Sep 21 19:45:57 2010
@@ -99,14 +99,14 @@ bcprov.jar=${bcprov.dir}/bcprov.jar
 bcprov.url=${depends.url}/jars/bcprov/${bcprov.ver}.jar
 bcprov.md5=2062f8e3d15748443ea60a94b266371c
 
-icu4j.ver=icu4j_4.2.1
+icu4j.ver=icu4j_4.4.1.1
 icu4j.dir=${depends.jars}/${icu4j.ver}
-icu4j.jar=${icu4j.dir}/icu4j-4_2_1.jar
-icu4j.url=http://download.icu-project.org/files/icu4j/4.2.1/icu4j-4_2_1.jar
-icu4j.md5=2bef290de1db6970a6699bf78f0dca77
+icu4j.jar=${icu4j.dir}/icu4j-4_4_1_1.jar
+icu4j.url=http://download.icu-project.org/files/icu4j/4.4.1.1/icu4j-4_4_1_1.jar
+icu4j.md5=52e1253e6c1c4124c4085e239e51a585
 
-icu4j-charsets.ver=icu4j_4.2.1
+icu4j-charsets.ver=icu4j_4.4.1.1
 icu4j-charsets.dir=${depends.jars}/${icu4j.ver}
-icu4j-charsets.jar=${icu4j.dir}/icu4j-charsets-4_2_1.jar
-icu4j-charsets.url=http://download.icu-project.org/files/icu4j/4.2.1/icu4j-charsets-4_2_1.jar
-icu4j-charsets.md5=bccab3c39d735171fb54ce5e4f49207b
+icu4j-charsets.jar=${icu4j.dir}/icu4j-charsets-4_4_1_1.jar
+icu4j-charsets.url=http://download.icu-project.org/files/icu4j/4.4.1.1/icu4j-charsets-4_4_1_1.jar
+icu4j-charsets.md5=d76e2861a01d427129f795223a610b2f

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/archive/src/main/native/zip/unix/makefile
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/archive/src/main/native/zip/unix/makefile?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/archive/src/main/native/zip/unix/makefile (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/archive/src/main/native/zip/unix/makefile Tue Sep 21 19:45:57 2010
@@ -24,6 +24,18 @@ INCLUDES += -I$(ZLIB_DIST)
 
 BUILDFILES = zcpool.o zipalloc.o zipcache.o zipsup.o pool.o pool_cap.o
 
+ifeq ($(HY_LOCAL_ZLIB),true)
+DEFINES += -DHY_LOCAL_ZLIB
+else
+
+ifeq ($(HY_OS),zos)
+MDLLIBZLIB += $(LIBPATH)libhyzlib$(HY_LINKLIB_SUFFIX)
+else
+MDLLIBZLIB += $(DLLPATH)libhyzlib$(HY_LINKLIB_SUFFIX)
+endif
+
+endif
+
 LIBNAME = $(LIBPATH)libhyzip.a
 
 $(HY_BIN)%.o: $(LIBPATH)libhypool.a(%.o)

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/main/java/java/beans/StandardBeanInfo.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/main/java/java/beans/StandardBeanInfo.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/main/java/java/beans/StandardBeanInfo.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/main/java/java/beans/StandardBeanInfo.java Tue Sep 21 19:45:57 2010
@@ -985,24 +985,28 @@ class StandardBeanInfo extends SimpleBea
             }
 
             // retrieve getters
+            Class<?>[] paramTypes = null;
+            String methodName = null;
             for (Method getter : getters) {
+                paramTypes = getter.getParameterTypes();
+                methodName = getter.getName();
                 // checks if it's a normal getter
-                if (getter.getParameterTypes() == null
-                        || getter.getParameterTypes().length == 0) {
+                if (paramTypes == null || paramTypes.length == 0) {
                     // normal getter found
                     if (normalGetter == null
-                            || getter.getName().startsWith(PREFIX_IS)) {
+                            || methodName.startsWith(PREFIX_IS)) {
                         normalGetter = getter;
                     }
                 }
 
                 // checks if it's an indexed getter
-                if (getter.getParameterTypes() != null
-                        && getter.getParameterTypes().length == 1
-                        && getter.getParameterTypes()[0] == int.class) {
+                if (paramTypes != null && paramTypes.length == 1
+                        && paramTypes[0] == int.class) {
                     // indexed getter found
                     if (indexedGetter == null
-                            || getter.getName().startsWith(PREFIX_IS)) {
+                            || methodName.startsWith(PREFIX_GET)
+                            || (methodName.startsWith(PREFIX_IS) && !indexedGetter
+                                    .getName().startsWith(PREFIX_GET))) {
                         indexedGetter = getter;
                     }
                 }
@@ -1251,6 +1255,12 @@ class StandardBeanInfo extends SimpleBea
                     && (indexedGetter != null || indexedSetter != null)) {
                 if (indexedGetter != null
                         && indexedGetter.getName().startsWith(PREFIX_IS)) {
+                    if (indexedSetter != null) {
+                        table.put(STR_INDEXED, STR_VALID);
+                        table.put(STR_INDEXED + PREFIX_SET, indexedSetter);
+                        table.put(STR_INDEXED + STR_PROPERTY_TYPE,
+                                indexedPropType);
+                    }
                     continue;
                 }
                 table.put(STR_INDEXED, STR_VALID);

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IntrospectorTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IntrospectorTest.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IntrospectorTest.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IntrospectorTest.java Tue Sep 21 19:45:57 2010
@@ -4117,6 +4117,512 @@ public class IntrospectorTest extends Te
         }
     }
 
+    public class MixedSimpleClass45 {
+        public boolean isList(int index) {
+            return true;
+        }
+    }
+
+    public void test_MixedSimpleClass45() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass45.class);
+        assertEquals(1, beanInfo.getPropertyDescriptors().length);
+    }
+
+    public class MixedSimpleClass46 {
+        public boolean getList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+    }
+
+    public void test_MixedSimpleClass46() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass46.class);
+        Method getter = MixedSimpleClass46.class.getMethod("getList",
+                new Class<?>[] {});
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertEquals(getter, pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertFalse(pd instanceof IndexedPropertyDescriptor);
+            }
+        }
+    }
+
+    public class MixedSimpleClass47 {
+        public boolean isList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+    }
+
+    public void test_MixedSimpleClass47() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass47.class);
+        Method getter = MixedSimpleClass47.class.getMethod("isList",
+                new Class<?>[] {});
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertEquals(getter, pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertFalse(pd instanceof IndexedPropertyDescriptor);
+            }
+        }
+    }
+
+    public class MixedSimpleClass48 {
+        public boolean getList(int index) {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+    }
+
+    public void test_MixedSimpleClass48() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass48.class);
+        Method getter = MixedSimpleClass48.class.getMethod("getList",
+                new Class<?>[] { int.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertEquals(getter,
+                        ((IndexedPropertyDescriptor) pd).getIndexedReadMethod());
+                assertNull(((IndexedPropertyDescriptor) pd)
+                        .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass49 {
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass49() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass49.class);
+        Method setter = MixedSimpleClass49.class.getMethod("setList",
+                new Class<?>[] { boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertEquals(setter, pd.getWriteMethod());
+                assertFalse(pd instanceof IndexedPropertyDescriptor);
+            }
+        }
+    }
+
+    public class MixedSimpleClass50 {
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(int index, boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass50() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass50.class);
+        Method setter = MixedSimpleClass50.class.getMethod("setList",
+                new Class<?>[] { int.class, boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertNull(((IndexedPropertyDescriptor) pd)
+                        .getIndexedReadMethod());
+                assertEquals(setter,
+                        ((IndexedPropertyDescriptor) pd)
+                                .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass51 {
+        public boolean getList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass51() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass51.class);
+        Method getter = MixedSimpleClass51.class.getMethod("getList",
+                new Class<?>[] {});
+        Method setter = MixedSimpleClass51.class.getMethod("setList",
+                new Class<?>[] { boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertEquals(getter, pd.getReadMethod());
+                assertEquals(setter, pd.getWriteMethod());
+                assertFalse(pd instanceof IndexedPropertyDescriptor);
+            }
+        }
+    }
+
+    public class MixedSimpleClass52 {
+        public boolean getList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(int index, boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass52() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass52.class);
+        Method setter = MixedSimpleClass52.class.getMethod("setList",
+                new Class<?>[] { int.class, boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertNull(((IndexedPropertyDescriptor) pd)
+                        .getIndexedReadMethod());
+                assertEquals(setter,
+                        ((IndexedPropertyDescriptor) pd)
+                                .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass53 {
+        public boolean isList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass53() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass53.class);
+        Method getter = MixedSimpleClass53.class.getMethod("isList",
+                new Class<?>[] {});
+        Method setter = MixedSimpleClass53.class.getMethod("setList",
+                new Class<?>[] { boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertEquals(getter, pd.getReadMethod());
+                assertEquals(setter, pd.getWriteMethod());
+                assertFalse(pd instanceof IndexedPropertyDescriptor);
+            }
+        }
+    }
+
+    public class MixedSimpleClass54 {
+        public boolean isList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(int index, boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass54() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass54.class);
+        Method setter = MixedSimpleClass54.class.getMethod("setList",
+                new Class<?>[] { int.class, boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertNull(((IndexedPropertyDescriptor) pd)
+                        .getIndexedReadMethod());
+                assertEquals(setter,
+                        ((IndexedPropertyDescriptor) pd)
+                                .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass55 {
+        public boolean getList(int index) {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass55() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass55.class);
+        Method getter = MixedSimpleClass55.class.getMethod("getList",
+                new Class<?>[] { int.class });
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertEquals(getter,
+                        ((IndexedPropertyDescriptor) pd).getIndexedReadMethod());
+                assertNull(((IndexedPropertyDescriptor) pd)
+                        .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass56 {
+        public boolean getList(int index) {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(int index, boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass56() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass56.class);
+        Method getter = MixedSimpleClass56.class.getMethod("getList",
+                new Class<?>[] { int.class });
+        Method setter = MixedSimpleClass56.class.getMethod("setList",
+                new Class<?>[] { int.class, boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertEquals(getter,
+                        ((IndexedPropertyDescriptor) pd).getIndexedReadMethod());
+                assertEquals(setter,
+                        ((IndexedPropertyDescriptor) pd)
+                                .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass57 {
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+
+        }
+
+        public void setList(int index, boolean bool) {
+        }
+    }
+
+    public void test_MixedSimpleClass57() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass57.class);
+        Method setter = MixedSimpleClass57.class.getMethod("setList",
+                new Class<?>[] { int.class, boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertNull(((IndexedPropertyDescriptor) pd)
+                        .getIndexedReadMethod());
+                assertEquals(setter,
+                        ((IndexedPropertyDescriptor) pd)
+                                .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass58 {
+        public boolean getList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+
+        public void setList(int index, boolean bool) {
+
+        }
+    }
+
+    public void test_MixedSimpleClass58() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass58.class);
+        Method getter = MixedSimpleClass58.class.getMethod("getList",
+                new Class<?>[] {});
+        Method setter = MixedSimpleClass58.class.getMethod("setList",
+                new Class<?>[] { boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertEquals(getter, pd.getReadMethod());
+                assertEquals(setter, pd.getWriteMethod());
+                assertFalse(pd instanceof IndexedPropertyDescriptor);
+            }
+        }
+    }
+
+    public class MixedSimpleClass59 {
+        public boolean isList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+
+        public void setList(int index, boolean bool) {
+
+        }
+    }
+
+    public void test_MixedSimpleClass59() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass59.class);
+        Method getter = MixedSimpleClass59.class.getMethod("isList",
+                new Class<?>[] {});
+        Method setter = MixedSimpleClass59.class.getMethod("setList",
+                new Class<?>[] { boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertEquals(getter, pd.getReadMethod());
+                assertEquals(setter, pd.getWriteMethod());
+                assertFalse(pd instanceof IndexedPropertyDescriptor);
+            }
+        }
+    }
+
+    public class MixedSimpleClass60 {
+        public boolean getList(int index) {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+
+        public void setList(int index, boolean bool) {
+
+        }
+    }
+
+    public void test_MixedSimpleClass60() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass60.class);
+        Method getter = MixedSimpleClass60.class.getMethod("getList",
+                new Class<?>[] { int.class });
+        Method setter = MixedSimpleClass60.class.getMethod("setList",
+                new Class<?>[] { int.class, boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertEquals(getter,
+                        ((IndexedPropertyDescriptor) pd).getIndexedReadMethod());
+                assertEquals(setter,
+                        ((IndexedPropertyDescriptor) pd)
+                                .getIndexedWriteMethod());
+            }
+        }
+    }
+
+    public class MixedSimpleClass61 {
+        public boolean getList() {
+            return true;
+        }
+
+        public boolean getList(int index) {
+            return true;
+        }
+
+        public boolean isList() {
+            return true;
+        }
+
+        public boolean isList(int index) {
+            return true;
+        }
+
+        public void setList(boolean bool) {
+        }
+
+        public void setList(int index, boolean bool) {
+
+        }
+    }
+
+    public void test_MixedSimpleClass61() throws Exception {
+        BeanInfo beanInfo = Introspector.getBeanInfo(MixedSimpleClass61.class);
+        Method getter = MixedSimpleClass61.class.getMethod("getList",
+                new Class<?>[] { int.class });
+        Method setter = MixedSimpleClass61.class.getMethod("setList",
+                new Class<?>[] { int.class, boolean.class });
+        assertEquals(2, beanInfo.getPropertyDescriptors().length);
+        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+            if (propertyName.equals(pd.getName())) {
+                assertNull(pd.getReadMethod());
+                assertNull(pd.getWriteMethod());
+                assertTrue(pd instanceof IndexedPropertyDescriptor);
+                assertEquals(getter,
+                        ((IndexedPropertyDescriptor) pd).getIndexedReadMethod());
+                assertEquals(setter,
+                        ((IndexedPropertyDescriptor) pd)
+                                .getIndexedWriteMethod());
+            }
+        }
+    }
+
     public class MixedExtendClass1 extends MixedSimpleClass4 {
         public void setList(Object a) {
 

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/instrument/src/main/native/instrument/unix/makefile
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/instrument/src/main/native/instrument/unix/makefile?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/instrument/src/main/native/instrument/unix/makefile (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/instrument/src/main/native/instrument/unix/makefile Tue Sep 21 19:45:57 2010
@@ -26,6 +26,10 @@ ifneq ($(HY_ZIP_API),true)
 MDLLIBFILES += $(LIBPATH)libhyzip.a 
 endif
 
+ifeq ($(HY_LOCAL_ZLIB),true)
+DEFINES += -DHY_LOCAL_ZLIB
+endif
+
 MDLLIBFILES += $(LIBPATH)libvmi$(HY_LINKLIB_SUFFIX)
 
 DLLNAME = $(DLLPATH)libhyinstrument$(HY_SHLIB_SUFFIX)

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/build.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/build.xml?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/build.xml (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/build.xml Tue Sep 21 19:45:57 2010
@@ -54,14 +54,6 @@
                 <include name="vmizip.h"/>
             </fileset>
         </copy>
-        <copy todir="${hy.jdk}/include" preservelastmodified="true">
-            <fileset dir="src/main/native/include">
-                <include name="jni.h" />
-                <include name="jni_types.h" />
-                <include name="jvmti.h" />
-                <include name="jvmti_types.h" />
-            </fileset>
-        </copy>
     </target>
 
     <!-- Build native code -->
@@ -213,14 +205,6 @@
                 <include name="hymagic.h" />
             </fileset>
         </delete>
-        <delete failonerror="false">
-            <fileset dir="${hy.jdk}/include">
-                <include name="jni.h" />
-                <include name="jni_types.h" />
-                <include name="jvmti.h" />
-                <include name="jvmti_types.h" />
-            </fileset>
-        </delete>
     </target>
 
     <!-- Clean overlaid OSS packages -->

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/io/PipedInputStream.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/io/PipedInputStream.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/io/PipedInputStream.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/io/PipedInputStream.java Tue Sep 21 19:45:57 2010
@@ -158,6 +158,11 @@ public class PipedInputStream extends In
             throw new IOException(Messages.getString("luni.CC")); //$NON-NLS-1$
         }
 
+        if (isClosed && in == -1) {
+            // write end closed and no more need to read
+            return -1;
+        }
+
         if (lastWriter != null && !lastWriter.isAlive() && (in < 0)) {
             // luni.CD=Write end dead
             throw new IOException(Messages.getString("luni.CD")); //$NON-NLS-1$
@@ -246,6 +251,11 @@ public class PipedInputStream extends In
             return 0;
         }
 
+        if (isClosed && in == -1) {
+            // write end closed and no more need to read
+            return -1;
+        }
+
         if (!isConnected) {
             // luni.CB=Not connected
             throw new IOException(Messages.getString("luni.CB")); //$NON-NLS-1$

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/Character.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/Character.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/Character.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/Character.java Tue Sep 21 19:45:57 2010
@@ -2184,7 +2184,7 @@ public final class Character implements 
         }
         int len = seq.length();
         if (index < 0 || index >= len) {
-            throw new IndexOutOfBoundsException();
+            throw new StringIndexOutOfBoundsException(index);
         }
 
         char high = seq.charAt(index++);
@@ -2226,7 +2226,7 @@ public final class Character implements 
         }
         int len = seq.length;
         if (index < 0 || index >= len) {
-            throw new IndexOutOfBoundsException();
+            throw new ArrayIndexOutOfBoundsException(index);
         }
 
         char high = seq[index++];
@@ -2267,7 +2267,7 @@ public final class Character implements 
      */
     public static int codePointAt(char[] seq, int index, int limit) {
         if (index < 0 || index >= limit || limit < 0 || limit > seq.length) {
-            throw new IndexOutOfBoundsException();
+            throw new ArrayIndexOutOfBoundsException();
         }       
 
         char high = seq[index++];
@@ -2309,7 +2309,7 @@ public final class Character implements 
         }
         int len = seq.length();
         if (index < 1 || index > len) {
-            throw new IndexOutOfBoundsException();
+            throw new StringIndexOutOfBoundsException(index);
         }
 
         char low = seq.charAt(--index);
@@ -2351,7 +2351,7 @@ public final class Character implements 
         }
         int len = seq.length;
         if (index < 1 || index > len) {
-            throw new IndexOutOfBoundsException();
+            throw new ArrayIndexOutOfBoundsException(index);
         }
 
         char low = seq[--index];
@@ -2398,7 +2398,7 @@ public final class Character implements 
         }
         int len = seq.length;
         if (index <= start || index > len || start < 0 || start >= len) {
-            throw new IndexOutOfBoundsException();
+            throw new ArrayIndexOutOfBoundsException();
         }
 
         char low = seq[--index];

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/String.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/String.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/String.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/lang/String.java Tue Sep 21 19:45:57 2010
@@ -36,6 +36,8 @@ import java.util.regex.PatternSyntaxExce
 import org.apache.harmony.kernel.vm.VM;
 import org.apache.harmony.luni.util.PriviAction;
 
+import com.ibm.icu.lang.UCharacter;
+
 /**
  * An immutable sequence of characters/code units ({@code char}s). A
  * {@code String} is represented by array of UTF-16 values, such that
@@ -1483,25 +1485,15 @@ public final class String implements Ser
      *         the characters in this string.
      */
     public String toLowerCase(Locale locale) {
-        for (int o = offset, end = offset + count; o < end; o++) {
-            char ch = value[o];
-            if (ch != toLowerCase(ch)) {
-                char[] buffer = new char[count];
-                int i = o - offset;
-                // Not worth checking for i == 0 case
-                System.arraycopy(value, offset, buffer, 0, i);
-                // Turkish
-                if (!"tr".equals(locale.getLanguage())) { //$NON-NLS-1$
-                    while (i < count) {
-                        buffer[i++] = toLowerCase(value[o++]);
-                    }
-                } else {
-                    while (i < count) {
-                        buffer[i++] = (ch = value[o++]) != 0x49 ? toLowerCase(ch)
-                                : (char) 0x131;
-                    }
-                }
-                return new String(0, count, buffer);
+        String result = UCharacter.toLowerCase(locale, this);
+        
+        // Must return self if chars unchanged
+        if (count != result.count) {
+            return result;
+        }
+        for (int i = 0; i < count; ++i) {
+            if (value[offset + i] != result.value[result.offset + i]) {
+                return result;
             }
         }
         return this;
@@ -1528,66 +1520,6 @@ public final class String implements Ser
         return toUpperCase(Locale.getDefault());
     }
 
-    private static final char[] upperValues = "SS\u0000\u02bcN\u0000J\u030c\u0000\u0399\u0308\u0301\u03a5\u0308\u0301\u0535\u0552\u0000H\u0331\u0000T\u0308\u0000W\u030a\u0000Y\u030a\u0000A\u02be\u0000\u03a5\u0313\u0000\u03a5\u0313\u0300\u03a5\u0313\u0301\u03a5\u0313\u0342\u1f08\u0399\u0000\u1f09\u0399\u0000\u1f0a\u0399\u0000\u1f0b\u0399\u0000\u1f0c\u0399\u0000\u1f0d\u0399\u0000\u1f0e\u0399\u0000\u1f0f\u0399\u0000\u1f08\u0399\u0000\u1f09\u0399\u0000\u1f0a\u0399\u0000\u1f0b\u0399\u0000\u1f0c\u0399\u0000\u1f0d\u0399\u0000\u1f0e\u0399\u0000\u1f0f\u0399\u0000\u1f28\u0399\u0000\u1f29\u0399\u0000\u1f2a\u0399\u0000\u1f2b\u0399\u0000\u1f2c\u0399\u0000\u1f2d\u0399\u0000\u1f2e\u0399\u0000\u1f2f\u0399\u0000\u1f28\u0399\u0000\u1f29\u0399\u0000\u1f2a\u0399\u0000\u1f2b\u0399\u0000\u1f2c\u0399\u0000\u1f2d\u0399\u0000\u1f2e\u0399\u0000\u1f2f\u0399\u0000\u1f68\u0399\u0000\u1f69\u0399\u0000\u1f6a\u0399\u0000\u1f6b\u0399\u0000\u1f6c\u0399\u0000\u1f6d\u0399\u0000\u1f6e\u0399\u0000\u1f6f\u0399\u0
 000\u1f68\u0399\u0000\u1f69\u0399\u0000\u1f6a\u0399\u0000\u1f6b\u0399\u0000\u1f6c\u0399\u0000\u1f6d\u0399\u0000\u1f6e\u0399\u0000\u1f6f\u0399\u0000\u1fba\u0399\u0000\u0391\u0399\u0000\u0386\u0399\u0000\u0391\u0342\u0000\u0391\u0342\u0399\u0391\u0399\u0000\u1fca\u0399\u0000\u0397\u0399\u0000\u0389\u0399\u0000\u0397\u0342\u0000\u0397\u0342\u0399\u0397\u0399\u0000\u0399\u0308\u0300\u0399\u0308\u0301\u0399\u0342\u0000\u0399\u0308\u0342\u03a5\u0308\u0300\u03a5\u0308\u0301\u03a1\u0313\u0000\u03a5\u0342\u0000\u03a5\u0308\u0342\u1ffa\u0399\u0000\u03a9\u0399\u0000\u038f\u0399\u0000\u03a9\u0342\u0000\u03a9\u0342\u0399\u03a9\u0399\u0000FF\u0000FI\u0000FL\u0000FFIFFLST\u0000ST\u0000\u0544\u0546\u0000\u0544\u0535\u0000\u0544\u053b\u0000\u054e\u0546\u0000\u0544\u053d\u0000".value; //$NON-NLS-1$
-
-    /**
-     * Return the index of the specified character into the upperValues table.
-     * The upperValues table contains three entries at each position. These
-     * three characters are the upper case conversion. If only two characters
-     * are used, the third character in the table is \u0000.
-     *
-     * @param ch
-     *            the char being converted to upper case
-     *
-     * @return the index into the upperValues table, or -1
-     */
-    private int upperIndex(int ch) {
-        int index = -1;
-        if (ch >= 0xdf) {
-            if (ch <= 0x587) {
-                if (ch == 0xdf) {
-                    index = 0;
-                } else if (ch <= 0x149) {
-                    if (ch == 0x149) {
-                        index = 1;
-                    }
-                } else if (ch <= 0x1f0) {
-                    if (ch == 0x1f0) {
-                        index = 2;
-                    }
-                } else if (ch <= 0x390) {
-                    if (ch == 0x390) {
-                        index = 3;
-                    }
-                } else if (ch <= 0x3b0) {
-                    if (ch == 0x3b0) {
-                        index = 4;
-                    }
-                } else if (ch <= 0x587) {
-                    if (ch == 0x587) {
-                        index = 5;
-                    }
-                }
-            } else if (ch >= 0x1e96) {
-                if (ch <= 0x1e9a) {
-                    index = 6 + ch - 0x1e96;
-                } else if (ch >= 0x1f50 && ch <= 0x1ffc) {
-                    index = "\u000b\u0000\f\u0000\r\u0000\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>\u0000\u0000?@A\u0000BC\u0000\u0000\u0000\u0000D\u0000\u0000\u0000\u0000\u0000EFG\u0000HI\u0000\u0000\u0000\u0000J\u0000\u0000\u0000\u0000\u0000KL\u0000\u0000MN\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000OPQ\u0000RS\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000TUV\u0000WX\u0000\u0000\u0000\u0000Y".value[ch - 0x1f50]; //$NON-NLS-1$
-                    if (index == 0) {
-                        index = -1;
-                    }
-                } else if (ch >= 0xfb00) {
-                    if (ch <= 0xfb06) {
-                        index = 90 + ch - 0xfb00;
-                    } else if (ch >= 0xfb13 && ch <= 0xfb17) {
-                        index = 97 + ch - 0xfb13;
-                    }
-                }
-            }
-        }
-        return index;
-    }
-
     /**
      * Converts the characters in this string to uppercase, using the specified
      * Locale.
@@ -1598,59 +1530,18 @@ public final class String implements Ser
      *         the characters in this string.
      */
     public String toUpperCase(Locale locale) {
-        boolean turkish = "tr".equals(locale.getLanguage()); //$NON-NLS-1$
-        char[] output = null;
-        int i = 0;
-        for (int o = offset, end = offset + count; o < end; o++) {
-            char ch = value[o];
-            int index = upperIndex(ch);
-            if (index == -1) {
-                if (output != null && i >= output.length) {
-                    char[] newoutput = new char[output.length + (count / 6) + 2];
-                    System.arraycopy(output, 0, newoutput, 0, output.length);
-                    output = newoutput;
-                }
-                char upch = !turkish ? toUpperCase(ch)
-                        : (ch != 0x69 ? toUpperCase(ch)
-                                : (char) 0x130);
-                if (ch != upch) {
-                    if (output == null) {
-                        output = new char[count];
-                        i = o - offset;
-                        System.arraycopy(value, offset, output, 0, i);
-
-                    }
-                    output[i++] = upch;
-                } else if (output != null) {
-                    output[i++] = ch;
-                }
-            } else {
-                int target = index * 3;
-                char val3 = upperValues[target + 2];
-                if (output == null) {
-                    output = new char[count + (count / 6) + 2];
-                    i = o - offset;
-                    System.arraycopy(value, offset, output, 0, i);
-                } else if (i + (val3 == 0 ? 1 : 2) >= output.length) {
-                    char[] newoutput = new char[output.length + (count / 6) + 3];
-                    System.arraycopy(output, 0, newoutput, 0, output.length);
-                    output = newoutput;
-                }
+        String result = UCharacter.toUpperCase(locale, this);
 
-                char val = upperValues[target];
-                output[i++] = val;
-                val = upperValues[target + 1];
-                output[i++] = val;
-                if (val3 != 0) {
-                    output[i++] = val3;
-                }
-            }
+        // Must return self if chars unchanged
+        if (count != result.count) {
+            return result;
         }
-        if (output == null) {
-            return this;
+        for (int i = 0; i < count; i++) {
+            if (value[offset + i] != result.value[result.offset + i]) {
+                return result;
+            }
         }
-        return output.length == i || output.length - i < 8 ? new String(0, i,
-                output) : new String(output, 0, i);
+        return this;
     }
 
     /**

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/net/SocketPermission.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/net/SocketPermission.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/net/SocketPermission.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/net/SocketPermission.java Tue Sep 21 19:45:57 2010
@@ -300,14 +300,7 @@ public final class SocketPermission exte
        String port = hostPort.substring(host.length());
        String emptyString = ""; //$NON-NLS-1$
 
-       if (emptyString.equals(port)) {
-           // Not specified
-           portMin = 80;
-           portMax = 80;
-           return;
-       }
-       
-       if (":*".equals(port)) {
+       if (emptyString.equals(port) || ":*".equals(port)) {
            // The port range should be 0-65535
            portMin = 0;
            portMax = 65535;

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/ArrayList.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/ArrayList.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/ArrayList.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/ArrayList.java Tue Sep 21 19:45:57 2010
@@ -326,14 +326,13 @@ public class ArrayList<E> extends Abstra
      *            the minimum capacity asked for.
      */
     public void ensureCapacity(int minimumCapacity) {
-        int required = minimumCapacity - array.length;
-        if (required > 0) {
+        if (array.length < minimumCapacity) {
             // REVIEW: Why do we check the firstIndex first? Growing
             //         the end makes more sense
             if (firstIndex > 0) {
-                growAtFront(required);
+                growAtFront(minimumCapacity - array.length);
             } else {
-                growAtEnd(required);
+                growAtEnd(minimumCapacity - array.length);
             }
         }
     }

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/Currency.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/Currency.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/Currency.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/java/util/Currency.java Tue Sep 21 19:45:57 2010
@@ -73,13 +73,11 @@ public final class Currency implements S
      */
     public static Currency getInstance(Locale locale) {
         com.ibm.icu.util.Currency currency = null;
-        try {
-            currency = com.ibm.icu.util.Currency.getInstance(locale);
-        } catch (IllegalArgumentException e) {
-            return null;
-        }
+        currency = com.ibm.icu.util.Currency.getInstance(locale);
+
         if (currency == null) {
-            throw new IllegalArgumentException(locale.getCountry());
+            checkCountry(locale.getCountry());
+            return null;
         }
         String currencyCode = currency.getCurrencyCode();
 
@@ -90,6 +88,15 @@ public final class Currency implements S
         return getInstance(currencyCode);
     }
 
+    private static void checkCountry(String country) {
+        String[] countries = Locale.getISOCountries();
+        List<String> countryArray = Arrays.asList(countries);
+
+        if (!countryArray.contains(country)) {
+            throw new IllegalArgumentException(country);
+        }
+    }
+
     /**
      * Returns this {@code Currency}'s ISO 4217 currency code.
      * 

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java Tue Sep 21 19:45:57 2010
@@ -23,6 +23,16 @@ package org.apache.harmony.luni.util;
  * floating point number.
  */
 public final class FloatingPointParser {
+    /*
+     * All number with exponent larger than MAX_EXP can be treated as infinity.
+     * All number with exponent smaller than MIN_EXP can be treated as zero.
+     * Exponent is 10 based.
+     * Eg. double's min value is 5e-324, so double "1e-325" should be parsed as 0.0 
+     */
+    private static final int FLOAT_MIN_EXP = -46;
+    private static final int FLOAT_MAX_EXP = 38;
+    private static final int DOUBLE_MIN_EXP = -324;
+    private static final int DOUBLE_MAX_EXP = 308;
 
 	private static final class StringExponentPair {
 		String s;
@@ -94,7 +104,7 @@ public final class FloatingPointParser {
 	private static StringExponentPair initialParse(String s, int length) {
 		boolean negative = false;
 		char c;
-		int start, end, decimal;
+		int start, end, decimal, shift;
 		int e = 0;
 
 		start = 0;
@@ -119,17 +129,31 @@ public final class FloatingPointParser {
                                         throw new NumberFormatException(s);
                                 }
                                 exponent_offset++; // skip the plus sign
+                                if (exponent_offset == length)
+                                    throw new NumberFormatException(s);
                         }
+            String strExp = s.substring(exponent_offset, length);
 			try {
-				e = Integer.parseInt(s.substring(exponent_offset,
-                                                                 length));
-                        } catch (NumberFormatException ex) {
-                                // ex contains the exponent substring
-                                // only so throw a new exception with
-                                // the correct string
-				throw new NumberFormatException(s);
-                        }                            
-                                    
+				e = Integer.parseInt(strExp);
+            } catch (NumberFormatException ex) {
+                // strExp is not empty, so there are 2 situations the exception be thrown
+                // if the string is invalid we should throw exception, if the actual number
+                // is out of the range of Integer, we can still parse the original number to
+                // double or float
+                char ch;
+                for (int i = 0; i < strExp.length(); i++) {
+                    ch = strExp.charAt(i);
+                    if (ch < '0' || ch > '9') {
+                        if (i == 0 && ch == '-')
+                            continue;
+                        // ex contains the exponent substring
+                        // only so throw a new exception with
+                        // the correct string
+                        throw new NumberFormatException(s);
+                    }
+                }
+                e = strExp.charAt(0) == '-' ? Integer.MIN_VALUE : Integer.MAX_VALUE;
+            }
 		} else {
 			end = length;
 		}
@@ -150,7 +174,11 @@ public final class FloatingPointParser {
 
 		decimal = s.indexOf('.');
 		if (decimal > -1) {
-			e -= end - decimal - 1;
+		    shift = end - decimal - 1;
+		    //prevent e overflow, shift >= 0
+		    if (e >= 0 || e - Integer.MIN_VALUE > shift) {
+		        e -= shift;
+		    }
 			s = s.substring(start, decimal) + s.substring(decimal + 1, end);
 		} else {
 			s = s.substring(start, end);
@@ -168,7 +196,10 @@ public final class FloatingPointParser {
 			start++;
 
 		if (end != length || start != 0) {
-			e += length - end;
+		    shift = length - end;
+		    if (e <= 0 || Integer.MAX_VALUE - e > shift) {
+		        e += shift;
+		    }
 			s = s.substring(start, end);
 		}
 
@@ -208,7 +239,7 @@ public final class FloatingPointParser {
 
 		if (namedDouble.regionMatches(false, cmpstart, "Infinity", 0, 8)) {
 			return negative ? Double.NEGATIVE_INFINITY
-					: Float.POSITIVE_INFINITY;
+					: Double.POSITIVE_INFINITY;
 		}
 
 		if (namedDouble.regionMatches(false, cmpstart, "NaN", 0, 3)) {
@@ -280,6 +311,17 @@ public final class FloatingPointParser {
         
 		StringExponentPair info = initialParse(s, length);
 
+		// two kinds of situation will directly return 0.0
+		// 1. info.s is 0
+		// 2. actual exponent is less than Double.MIN_EXPONENT
+		if ("0".equals(info.s) || (info.e + info.s.length() - 1 < DOUBLE_MIN_EXP)) {
+		    return info.negative ? -0.0 : 0.0;
+		}
+		// if actual exponent is larger than Double.MAX_EXPONENT, return infinity
+		// prevent overflow, check twice
+		if ((info.e > DOUBLE_MAX_EXP) || (info.e + info.s.length() - 1 > DOUBLE_MAX_EXP)) {
+		    return info.negative ? Double.NEGATIVE_INFINITY : Double.POSITIVE_INFINITY;
+		}
 		double result = parseDblImpl(info.s, info.e);
 		if (info.negative)
 			result = -result;
@@ -318,6 +360,17 @@ public final class FloatingPointParser {
         
 		StringExponentPair info = initialParse(s, length);
 
+        // two kinds of situation will directly return 0.0f
+        // 1. info.s is 0
+        // 2. actual exponent is less than Float.MIN_EXPONENT
+        if ("0".equals(info.s) || (info.e + info.s.length() - 1 < FLOAT_MIN_EXP)) {
+            return info.negative ? -0.0f : 0.0f;
+        }
+        // if actual exponent is larger than Float.MAX_EXPONENT, return infinity
+        // prevent overflow, check twice
+        if ((info.e > FLOAT_MAX_EXP) || (info.e + info.s.length() - 1 > FLOAT_MAX_EXP)) {
+            return info.negative ? Float.NEGATIVE_INFINITY : Float.POSITIVE_INFINITY;
+        }
 		float result = parseFltImpl(info.s, info.e);
 		if (info.negative)
 			result = -result;

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/PipedInputStreamTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/PipedInputStreamTest.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/PipedInputStreamTest.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/PipedInputStreamTest.java Tue Sep 21 19:45:57 2010
@@ -361,6 +361,40 @@ public class PipedInputStreamTest extend
                 myRun.pass);
     }
 
+    static class Worker extends Thread {
+        PipedOutputStream out;
+
+        Worker(PipedOutputStream pos) {
+            this.out = pos;
+        }
+
+        public void run() {
+            try {
+                out.write(20);
+                out.close();
+                Thread.sleep(5000);
+            } catch (Exception e) {
+            }
+        }
+    }
+
+    public void test_read_after_write_close() throws Exception{
+        PipedInputStream in = new PipedInputStream();
+        PipedOutputStream out = new PipedOutputStream();
+        in.connect(out);
+        Thread worker = new Worker(out);
+        worker.start();
+        Thread.sleep(2000);
+        assertEquals("Should read 20.", 20, in.read());
+        worker.join();
+        assertEquals("Write end is closed, should return -1", -1, in.read());
+        byte[] buf = new byte[1];
+        assertEquals("Write end is closed, should return -1", -1, in.read(buf, 0, 1));
+        assertEquals("Buf len 0 should return first", 0, in.read(buf, 0, 0));
+        in.close();
+        out.close();
+    }
+
     /**
      * Tears down the fixture, for example, close a network connection. This
      * method is called after a test is executed.

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/FloatTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/FloatTest.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/FloatTest.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/FloatTest.java Tue Sep 21 19:45:57 2010
@@ -904,6 +904,13 @@ public class FloatTest extends TestCase 
 
         Float negInfiniteSigned = Float.valueOf("-Infinity");
         assertTrue("Floattest7", negInfiniteSigned.equals(new Float(Float.NEGATIVE_INFINITY)));
+        
+        // test HARMONY-6641
+        posInfinite = Float.valueOf("320.0E+2147483647");
+        assertEquals("Floattest8", Float.POSITIVE_INFINITY, posInfinite);
+        
+        negZero = Float.valueOf("-1.4E-2147483314");
+        assertEquals("Floattest9", -0.0f, negZero);
     }
 
     private void test_toString(float ff, String answer) {

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketPermissionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketPermissionTest.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketPermissionTest.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketPermissionTest.java Tue Sep 21 19:45:57 2010
@@ -64,6 +64,11 @@ public class SocketPermissionTest extend
                 "listen");
         assertTrue("Port range error", sp3.implies(spAllPorts));
         assertTrue("Port range error", spAllPorts.implies(sp3));
+
+        SocketPermission sp4 = new SocketPermission("localhost", "listen");
+        assertEquals("Wrong name4", "localhost", sp4.getName());
+        assertTrue("Port range error", sp4.implies(spAllPorts));
+        assertTrue("Port range error", spAllPorts.implies(sp4));
     }
 
     /**

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ArrayListTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ArrayListTest.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ArrayListTest.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ArrayListTest.java Tue Sep 21 19:45:57 2010
@@ -546,6 +546,10 @@ public class ArrayListTest extends junit
         al.ensureCapacity(capacity + 2);
         assertTrue("EnsureCapacity did not change location.", location == al
                 .indexOf(testObject));
+
+        ArrayList<String> list = new ArrayList<String>(1);
+        list.add("hello");
+        list.ensureCapacity(Integer.MIN_VALUE);
     }
 
     /**

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java Tue Sep 21 19:45:57 2010
@@ -1117,7 +1117,7 @@ public class ScannerTest extends TestCas
             // expected
         }
 
-        s = new Scanner("-123 123- (123)");
+        s = new Scanner("-123 123-");
         s.useLocale(new Locale("mk", "MK"));
         assertEquals(-123, s.nextInt(10));
         try {
@@ -1128,8 +1128,6 @@ public class ScannerTest extends TestCas
         }
         // Skip the un-recognizable token 123-.
         assertEquals("123-", s.next());
-        // The following test case fails on RI
-        assertEquals(-123, s.nextInt(10));
 
         // If the parameter radix is illegal, the following test cases fail on
         // RI
@@ -1317,7 +1315,7 @@ public class ScannerTest extends TestCas
             // expected
         }
 
-        s = new Scanner("-123 123- (123)");
+        s = new Scanner("-123 123-");
         s.useLocale(new Locale("mk", "MK"));
         assertEquals(-123, s.nextInt());
         try {
@@ -1328,8 +1326,6 @@ public class ScannerTest extends TestCas
         }
         // Skip the un-recognizable token 123-.
         assertEquals("123-", s.next());
-        // The following test case fails on RI
-        assertEquals(-123, s.nextInt());
     }
     
     /**
@@ -1574,9 +1570,8 @@ public class ScannerTest extends TestCas
             // Expected
         }
 
-        s = new Scanner("(123) 123- -123");
+        s = new Scanner("123- -123");
         s.useLocale(new Locale("mk", "MK"));
-        assertEquals((float)-123.0, s.nextFloat());
         try {
             s.nextFloat();
             fail("Should throw InputMismatchException");
@@ -3451,7 +3446,7 @@ public class ScannerTest extends TestCas
             // expected
         }
 
-        s = new Scanner("-123 123- (123)");
+        s = new Scanner("-123 123-");
         s.useLocale(new Locale("mk", "MK"));
         assertTrue(s.hasNextInt(10));
         assertEquals(-123, s.nextInt(10));
@@ -3464,9 +3459,6 @@ public class ScannerTest extends TestCas
         }
         // Skip the un-recognizable token 123-.
         assertEquals("123-", s.next());
-        // The following test case fails on RI
-        assertTrue(s.hasNextInt(10));
-        assertEquals(-123, s.nextInt(10));
     }
 
     /**
@@ -3653,7 +3645,7 @@ public class ScannerTest extends TestCas
             // expected
         }
 
-        s = new Scanner("-123 123- (123)");
+        s = new Scanner("-123 123-");
         s.useLocale(new Locale("mk", "MK"));
         assertTrue(s.hasNextInt());
         assertEquals(-123, s.nextInt());
@@ -3665,9 +3657,6 @@ public class ScannerTest extends TestCas
         }
         // Skip the un-recognizable token 123-.
         assertEquals("123-", s.next());
-        // The following test case fails on RI
-        assertTrue(s.hasNextInt());
-        assertEquals(-123, s.nextInt());
     }
     
     /**
@@ -3775,10 +3764,8 @@ public class ScannerTest extends TestCas
 //            // Expected
 //        }
 
-        s = new Scanner("(123) 123- -123");
+        s = new Scanner("123- -123");
         s.useLocale(new Locale("mk", "MK"));
-        assertTrue(s.hasNextFloat());
-        assertEquals((float)-123.0, s.nextFloat());
         assertFalse(s.hasNextFloat());
         try {
             s.nextFloat();
@@ -5701,6 +5688,7 @@ public class ScannerTest extends TestCas
         thread.start();
         for (int index = 0; index < 5; index++) {
             pos.write(("line" + index + "\n").getBytes());
+            pos.flush();
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {

Modified: harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/main/java/java/nio/charset/Charset.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/main/java/java/nio/charset/Charset.java?rev=999573&r1=999572&r2=999573&view=diff
==============================================================================
--- harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/main/java/java/nio/charset/Charset.java (original)
+++ harmony/enhanced/java/branches/mrh/classlib/modules/nio_char/src/main/java/java/nio/charset/Charset.java Tue Sep 21 19:45:57 2010
@@ -96,7 +96,7 @@ public abstract class Charset implements
     private static CharsetProviderImpl _builtInProvider = null;
 
     // cached built in charsets
-    private static TreeMap<String, Charset> _builtInCharsets = null;
+    private static volatile TreeMap<String, Charset> _builtInCharsets = null;
 
     private final String canonicalName;