merged 1.1 branch into head
[mir.git] / source / mir / util / HTMLRoutines.java
index c532e51..dd4882f 100755 (executable)
 
 package mir.util;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.Map;
 
 public class HTMLRoutines {
+  private HTMLRoutines() {
+  }
+
+  private static Method encodeURLMethod;
+  static {
+    try {
+      encodeURLMethod = URLEncoder.class.getMethod("encode", new Class[] {String.class});
+    }
+    catch (NoSuchMethodException e) {
+      throw new RuntimeException(e.getMessage());
+    }
+  }
+
   /**
    * Encodes a URL: escapes reserved URL characters like &, = into % escape
    *    constructions.
    */
   public static String encodeURL(String aString) {
-    return URLEncoder.encode(aString);
-  }
-
-  public static String encodeURL(String aString, String anEncoding) {
     try {
-      return URLEncoder.encode(aString);
+      return (String) encodeURLMethod.invoke(URLEncoder.class, new Object[] {aString});
     }
-    catch (Throwable t) {
-      throw new RuntimeException(t.getMessage());
+    catch (IllegalAccessException e) {
+      throw new RuntimeException(e.getMessage());
+    }
+    catch (InvocationTargetException e) {
+      throw new RuntimeException(e.getMessage());
     }
   }
 
-  public static String encodeHTML(String aText) {
-    final char[] CHARACTERS_TO_ESCAPE = { '&', '<', '>', '"' };
-    final String[] ESCAPE_CODES = { "&amp;", "&lt;", "&gt;", "&quot;" };
+  public static String encodeURL(String aString, String anEncoding) {
+    return encodeURL(aString);
+  }
 
+  private static final char[] CHARACTERS_TO_ESCAPE = { '&', '<', '>', '"' };
+  private static final String[] ESCAPE_CODES = { "&amp;", "&lt;", "&gt;", "&quot;" };
+
+  public static String encodeHTML(String aText) {
     return StringRoutines.replaceStringCharacters(aText, CHARACTERS_TO_ESCAPE, ESCAPE_CODES);
   }
 
   public static String prettyEncodeHTML(String aText) throws UtilExc {
-    return
-        StringRoutines.performRegularExpressionReplacement(encodeHTML(aText), "\\n", "<br>\n");
+    return StringRoutines.performRegularExpressionReplacement(
+        encodeHTML(aText), "\\n", "<br>\n");
   }
 
   public static String encodeXML(String aText) {