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

svn commit: r560112 - in /harmony/enhanced/classlib/branches/java6/modules: beans/src/main/java/java/beans/ beans/src/test/java/org/apache/harmony/beans/tests/java/beans/ luni/src/main/java/java/io/ luni/src/main/java/java/util/ luni/src/main/native/la...

Author: pyang
Date: Thu Jul 26 22:43:13 2007
New Revision: 560112

URL: http://svn.apache.org/viewvc?view=rev&rev=560112
Log:
Merge updates from classlib trunk@560058 since r559308

Added:
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/resources/javax/swing/testhtml.jar
      - copied unchanged from r560058, harmony/enhanced/classlib/trunk/modules/swing/src/test/resources/javax/swing/testhtml.jar
Modified:
    harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PropertyDescriptor.java
    harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IndexedPropertyDescriptorTest.java
    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/util/HashMap.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/unix/main_hlp.c
    harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/windows/main_hlp.c
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/FileTest.java
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/GregorianCalendarTest.java
    harmony/enhanced/classlib/branches/java6/modules/portlib/src/main/native/port/windows/hyfile.c
    harmony/enhanced/classlib/branches/java6/modules/regex/src/main/java/java/util/regex/Matcher.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTML.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/JEditorPaneTest.java
    harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PropertyDescriptor.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PropertyDescriptor.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PropertyDescriptor.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/main/java/java/beans/PropertyDescriptor.java Thu Jul 26 22:43:13 2007
@@ -246,8 +246,10 @@
                 Method[] methods = beanClass.getMethods();
                 for (Method method : methods) {
                     if (method.getName().equals(setterName)) {
-                        writeMethod = method;
-                        break;
+                        if (method.getParameterTypes().length == 1) {
+                            writeMethod = method;
+                            break;
+                        }
                     }
                 }
             }

Modified: harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IndexedPropertyDescriptorTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IndexedPropertyDescriptorTest.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IndexedPropertyDescriptorTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/IndexedPropertyDescriptorTest.java Thu Jul 26 22:43:13 2007
@@ -771,6 +771,33 @@
         assertEquals(String[].class, ipd.getPropertyType());
         assertEquals("set" + anotherProp, ipd.getIndexedWriteMethod().getName());
     }
+    
+    public void testIndexedPropertyDescriptorStringClassStringStringStringString_WrongArgumentNumber()
+            throws IntrospectionException {
+        IndexedPropertyDescriptor ipd = new IndexedPropertyDescriptor("a", DummyClass.class, null, "setAI",
+                "getAI", "setAI");
+        assertNotNull(ipd);
+    }
+
+    private class DummyClass {
+        private int[] a;
+
+        public void setAI(int v, int i) {
+            a[i] = v;
+        }
+
+        public void setAI(int[] a) {
+            this.a = a;
+        }
+
+        public int[] getA() {
+            return a;
+        }
+
+        public int getAI(int i) {
+            return a[i];
+        }
+    }
 
     /*
      * Class under test for void IndexedPropertyDescriptor(String, Method,

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?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- 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 Thu Jul 26 22:43:13 2007
@@ -873,7 +873,8 @@
         }
         String result[] = new String[implList.length];
         for (int index = 0; index < implList.length; index++) {
-            result[index] = Util.toString(implList[index]);
+            result[index] = Util.toUTF8String(implList[index]);
+            //result[index] = Util.toString(implList[index]);
         }
         return result;
     }

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/HashMap.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/HashMap.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/HashMap.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/java/java/util/HashMap.java Thu Jul 26 22:43:13 2007
@@ -240,7 +240,7 @@
      */
     public HashMap(int capacity) {
         if (capacity >= 0) {
-            capacity = caculateCapacity(capacity);
+            capacity = calculateCapacity(capacity);
             elementCount = 0;
             elementData = newElementArray(capacity);
             loadFactor = 0.75f; // Default load factor of 0.75
@@ -250,7 +250,7 @@
         }
     }
     
-    private static final int caculateCapacity(int x) {
+    private static final int calculateCapacity(int x) {
         if(x >= 1 << 30){
             return 1 << 30;
         }
@@ -282,6 +282,7 @@
      */
     public HashMap(int capacity, float loadFactor) {
         if (capacity >= 0 && loadFactor > 0) {
+            capacity = calculateCapacity(capacity);
             elementCount = 0;
             elementData = newElementArray(capacity == 0 ? 1 : capacity);
             this.loadFactor = loadFactor;
@@ -597,7 +598,7 @@
     }
 
     void rehash(int capacity) {
-        int length = caculateCapacity((capacity == 0 ? 1 : capacity << 1));
+        int length = calculateCapacity((capacity == 0 ? 1 : capacity << 1));
 
         Entry<K, V>[] newData = newElementArray(length);
         for (int i = 0; i < elementData.length; i++) {

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/unix/main_hlp.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/unix/main_hlp.c?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/unix/main_hlp.c (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/unix/main_hlp.c Thu Jul 26 22:43:13 2007
@@ -1,3 +1,20 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 #include <stdlib.h>
 #include <sys/utsname.h>
 

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/windows/main_hlp.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/windows/main_hlp.c?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/windows/main_hlp.c (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/main/native/launcher/windows/main_hlp.c Thu Jul 26 22:43:13 2007
@@ -1,3 +1,20 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
 #include <windows.h>
 #include <stdio.h>
 #include <stdlib.h>

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/FileTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/FileTest.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/FileTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/io/FileTest.java Thu Jul 26 22:43:13 2007
@@ -2267,6 +2267,31 @@
         assertEquals(String.class, objectStreamField.getType());
     }
     
+    //Regression test for HARMONY-4493
+    public void test_list_withUnicodeFileName() throws Exception {
+        File rootDir = new File("P");
+        if (!rootDir.exists()) {
+            rootDir.mkdir();
+            rootDir.deleteOnExit();
+        }
+
+        String dirName = new String("src\u3400");
+        File dir = new File(rootDir, dirName);
+        if (!dir.exists()) {
+            dir.mkdir();
+            dir.deleteOnExit();
+        }
+        boolean exist = false;
+        String[] fileNames = rootDir.list();
+        for (String fileName : fileNames) {
+            if (dirName.equals(fileName)) {
+                exist = true;
+                break;
+            }
+        }
+        assertTrue(exist);
+    }
+    
 	/**
 	 * Sets up the fixture, for example, open a network connection. This method
 	 * is called before a test is executed.

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/GregorianCalendarTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/GregorianCalendarTest.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/GregorianCalendarTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/tests/api/java/util/GregorianCalendarTest.java Thu Jul 26 22:43:13 2007
@@ -726,14 +726,18 @@
         assertEquals(11, gc.get(Calendar.MONTH));
         
         // Regression test for HARMONY-4513
-        gc = new GregorianCalendar(1582, Calendar.OCTOBER, 15);
+        gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+        gc.set(1582, Calendar.OCTOBER, 15, 0, 0, 0);
+        // reset millisecond to zero in order to be the same time as cutover
+        gc.set(Calendar.MILLISECOND, 0);
+        assertEquals(0, gc.get(Calendar.MILLISECOND)); 
         assertEquals(1582, gc.get(Calendar.YEAR));
         assertEquals(Calendar.OCTOBER, gc.get(Calendar.MONTH));
         assertEquals(15, gc.get(Calendar.DAY_OF_MONTH));
         assertEquals(0, gc.get(Calendar.HOUR_OF_DAY));
         assertEquals(0, gc.get(Calendar.MINUTE));
         assertEquals(0, gc.get(Calendar.SECOND));
-        gc = new GregorianCalendar(1582, Calendar.OCTOBER, 14);
+        gc.set(1582, Calendar.OCTOBER, 14, 0, 0, 0);
         assertEquals(24, gc.get(Calendar.DAY_OF_MONTH));
     }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/portlib/src/main/native/port/windows/hyfile.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/portlib/src/main/native/port/windows/hyfile.c?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/portlib/src/main/native/port/windows/hyfile.c (original)
+++ harmony/enhanced/classlib/branches/java6/modules/portlib/src/main/native/port/windows/hyfile.c Thu Jul 26 22:43:13 2007
@@ -197,14 +197,17 @@
 hyfile_findfirst (struct HyPortLibrary *portLibrary, const char *path,
 		  char *resultbuf)
 {
-  WIN32_FIND_DATA lpFindFileData;
+  WIN32_FIND_DATAW lpFindFileDataW;
   char newPath[HyMaxPath];
   HANDLE result;
-
+  wchar_t *pathW;  
+  
   strcpy (newPath, path);
   strcat (newPath, "*");
+  
+  convert_path_to_unicode(portLibrary, newPath, &pathW);
 
-  result = FindFirstFile ((LPCTSTR) newPath, &lpFindFileData);
+  result = FindFirstFileW ((LPCWSTR) pathW, &lpFindFileDataW);
   if (result == INVALID_HANDLE_VALUE)
     {
       I_32 error = GetLastError ();
@@ -212,8 +215,7 @@
 					 findError (error));
       return (UDATA) - 1;
     }
-
-  lstrcpy (resultbuf, lpFindFileData.cFileName);
+  WideCharToMultiByte(CP_UTF8, 0, lpFindFileDataW.cFileName, -1, resultbuf, HyMaxPath, NULL, NULL);  
   return (UDATA) result;
 }
 
@@ -234,16 +236,15 @@
 hyfile_findnext (struct HyPortLibrary * portLibrary, UDATA findhandle,
 		 char *resultbuf)
 {
-  WIN32_FIND_DATA lpFindFileData;
-  if (!FindNextFile ((HANDLE) findhandle, &lpFindFileData))
+  WIN32_FIND_DATAW lpFindFileDataW;  
+  if (!FindNextFileW ((HANDLE) findhandle, &lpFindFileDataW))
     {
       I_32 error = GetLastError ();
       portLibrary->error_set_last_error (portLibrary, error,
 					 findError (error));
       return -1;
     }
-
-  lstrcpy (resultbuf, lpFindFileData.cFileName);
+  WideCharToMultiByte(CP_UTF8, 0, lpFindFileDataW.cFileName, -1, resultbuf, HyMaxPath, NULL, NULL); 
   return 0;
 }
 

Modified: harmony/enhanced/classlib/branches/java6/modules/regex/src/main/java/java/util/regex/Matcher.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/regex/src/main/java/java/util/regex/Matcher.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/regex/src/main/java/java/util/regex/Matcher.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/regex/src/main/java/java/util/regex/Matcher.java Thu Jul 26 22:43:13 2007
@@ -15,10 +15,6 @@
  *  limitations under the License.
  */
 
-/**
- * @author Nikolay A. Kuznetsov
- * @version $Revision: 1.22.2.2 $
- */
 package java.util.regex;
 
 import java.util.ArrayList;
@@ -26,11 +22,7 @@
 import org.apache.harmony.regex.internal.nls.Messages;
 
 /**
- * @com.intel.drl.spec_ref
- * 
  * Note: main functionality of this class is hidden into nodes match methods. 
- * @author Nikolay A. Kuznetsov
- * @version $Revision: 1.22.2.2 $
  */
 public final class Matcher implements MatchResult {
 
@@ -295,7 +287,11 @@
         matchResult.reset();
         matchResult.setMode(Matcher.MODE_FIND);
         matchResult.setStartIndex(startIndex);
-        return start.find(startIndex, string, matchResult);
+        int foundIndex = start.find(startIndex, string, matchResult);
+        if (foundIndex == -1) {
+            matchResult.hitEnd = true;
+        }
+        return foundIndex;
     }
 
 	/**

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTML.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTML.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTML.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/main/java/common/javax/swing/text/html/HTML.java Thu Jul 26 22:43:13 2007
@@ -25,8 +25,6 @@
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
@@ -554,38 +552,47 @@
         if (url == null) {
             return null;
         }
-        return resolveURL(url.toString(), base != null ? base.toString() : null);
+
+        try {
+            return ((base != null) ? new URL(base, url.toString()) : url);
+        } catch (MalformedURLException e) {
+            return null;
+        }
     }
 
     static URL resolveURL(final String url, final URL base) {
         if (Utilities.isEmptyString(url)) {
             return null;
         }
-        return resolveURL(url, base != null ? base.toString() : null);
-    }
 
-    static URL resolveURL(final String url, final String base) {
-        if (Utilities.isEmptyString(url)) {
+        try {
+            return ((base != null) ? new URL(base, url) : new URL(url));
+        } catch (MalformedURLException e) {
             return null;
         }
+    }
 
-        URI uri = null;
-        if (base != null) {
-            try {
-                uri = new URI(base).resolve(url);
-            } catch (URISyntaxException e) { }
+    static URL resolveURL(final URL url, final String base) {
+        if (url == null) {
+            return null;
         }
 
-        URL result = null;
         try {
-            if (uri != null) {
-                result = uri.toURL();
-            } else {
-                result = new URL(url);
-            }
-        } catch (final MalformedURLException e) { }
+            return ((base != null) ? new URL(new URL(base), url.toString()) : url);
+        } catch (MalformedURLException e) {
+            return null;
+        }
+    }
+
+    static URL resolveURL(final String url, final String base) {
+        if (Utilities.isEmptyString(url)) {
+            return null;
+        }
 
-        return result;
+        try {
+            return ((base != null) ? new URL(new URL(base), url) : new URL(url));
+        } catch (MalformedURLException e) {
+            return null;
+        }
     }
 }
-

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/JEditorPaneTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/JEditorPaneTest.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/JEditorPaneTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/JEditorPaneTest.java Thu Jul 26 22:43:13 2007
@@ -460,6 +460,17 @@
                 "javax.swing.text.html.HTMLEditorKit", "text/html", TEST_URL, jep);
     }
 
+    public void testJEditorPaneJarHTML() {
+        try {
+            // Regression for HARMONY-4529
+            URL jar = getClass().getResource("testhtml.jar");
+            URL url = new URL("jar:" + jar + "!/index.html");
+            new JEditorPane(url);
+        } catch (Exception e) {
+            fail("Unexpected exception: " + e);
+        }
+    }
+
     private void assertEquals(final ArrayList<HyperlinkListener> a, final Object objects[]) {
         int size = a.size();
         assertEquals(size, objects.length);

Modified: harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java?view=diff&rev=560112&r1=560111&r2=560112
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLTest.java Thu Jul 26 22:43:13 2007
@@ -20,6 +20,8 @@
  */
 package javax.swing.text.html;
 
+import java.net.URL;
+
 import javax.swing.BasicSwingTestCase;
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.SimpleAttributeSet;
@@ -681,6 +683,47 @@
             assertSame("Static attribute for Tag " + tags[i] + ", index " + i,
                        tags[i],
                        StyleContext.getStaticAttribute(staticKey));
+        }
+    }
+
+    public void testResolveURL() {
+        try {
+            // Regression for HARMONY-4529
+            String base = "jar:file:test.jar!/root/current";
+            String relative = "dir/file";
+            String absolute = "http://host/file";
+            URL baseURL = new URL(base);
+            URL absoluteURL = new URL(absolute);
+            URL resolvedURL = new URL("jar:file:test.jar!/root/dir/file");
+
+            assertEquals(resolvedURL, HTML.resolveURL(relative, base));
+            assertEquals(resolvedURL, HTML.resolveURL(relative, baseURL));
+
+            assertEquals(absoluteURL, HTML.resolveURL(absolute, base));
+            assertEquals(absoluteURL, HTML.resolveURL(absolute, baseURL));
+            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, base));
+            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, baseURL));
+
+            assertEquals(absoluteURL, HTML.resolveURL(absolute, (URL) null));
+            assertEquals(absoluteURL, HTML.resolveURL(absolute, (String) null));
+            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, (URL) null));
+            assertEquals(absoluteURL, HTML.resolveURL(absoluteURL, (String) null));
+
+            assertNull(HTML.resolveURL("", base));
+            assertNull(HTML.resolveURL("", baseURL));
+            assertNull(HTML.resolveURL((URL) null, base));
+            assertNull(HTML.resolveURL((URL) null, baseURL));
+            assertNull(HTML.resolveURL((String) null, base));
+            assertNull(HTML.resolveURL((String) null, baseURL));
+
+            assertNull(HTML.resolveURL("", (URL) null));
+            assertNull(HTML.resolveURL("", (String) null));
+            assertNull(HTML.resolveURL((URL) null, (URL) null));
+            assertNull(HTML.resolveURL((URL) null, (String) null));
+            assertNull(HTML.resolveURL((String) null, (URL) null));
+            assertNull(HTML.resolveURL((String) null, (String) null));
+        } catch (Exception e) {
+            fail("Unexpected exception: " + e);
         }
     }
 }