You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2010/03/03 11:39:31 UTC

svn commit: r918391 - in /felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole: WebConsoleUtil.java internal/misc/ConfigurationRender.java internal/misc/ShellServlet.java

Author: fmeschbe
Date: Wed Mar  3 10:39:30 2010
New Revision: 918391

URL: http://svn.apache.org/viewvc?rev=918391&view=rev
Log:
FELIX-2123 Introduce new WebConsoleUtil.urlDecode method to hide the fact that some platforms do not provide the Java 1.4 URLDecoder.decode(String, String) method.
(Also change the ZIP compression for zipped configuration status download to "best speed"
which still gives good compression but is much faster)

Modified:
    felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/WebConsoleUtil.java
    felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
    felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java

Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/WebConsoleUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/WebConsoleUtil.java?rev=918391&r1=918390&r2=918391&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/WebConsoleUtil.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/WebConsoleUtil.java Wed Mar  3 10:39:30 2010
@@ -20,6 +20,7 @@
 
 
 import java.io.IOException;
+import java.net.URLDecoder;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -333,4 +334,31 @@
         }
     }
 
+
+    /**
+     * Decode the given value expected to be URL encoded.
+     * <p>
+     * This method first tries to use the Java 1.4 method
+     * <code>URLDecoder.decode(String, String)</code> method and falls back to
+     * the now deprecated <code>URLDecoder.decode(String, String)</code>
+     * which uses the platform character set to decode the string. This is
+     * because the platforms before 1.4 and most notably some OSGi Execution
+     * Environments (such as Minimum EE) do not provide the newer method.
+     *
+     * @param value
+     * @return
+     */
+    public static String urlDecode( final String value )
+    {
+        try
+        {
+            return URLDecoder.decode( value, "UTF-8" );
+        }
+        catch ( Throwable t )
+        {
+            // expected NoSuchMethodError: if platform does not support it
+            // expected UnsupportedEncoding (not really: UTF-8 is required)
+            return URLDecoder.decode( value );
+        }
+    }
 }

Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java?rev=918391&r1=918390&r2=918391&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java Wed Mar  3 10:39:30 2010
@@ -19,9 +19,9 @@
 
 import java.io.*;
 import java.net.URL;
-import java.net.URLDecoder;
 import java.text.*;
 import java.util.*;
+import java.util.zip.Deflater;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -113,7 +113,7 @@
             response.setContentType( type );
 
             ZipOutputStream zip = new ZipOutputStream( response.getOutputStream() );
-            zip.setLevel( 9 );
+            zip.setLevel( Deflater.BEST_SPEED );
             zip.setMethod( ZipOutputStream.DEFLATED );
 
             final ConfigurationWriter pw = new ZipConfigurationWriter( zip );
@@ -131,7 +131,7 @@
             String name = request.getPathInfo();
             name = name.substring( name.lastIndexOf('/') + 1);
             name = name.substring(0, name.length() - 4);
-            name = URLDecoder.decode( name, "UTF-8" );
+            name = WebConsoleUtil.urlDecode( name );
 
             ConfigurationWriter pw = new HtmlConfigurationWriter( response.getWriter() );
             pw.println ( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"" );

Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java?rev=918391&r1=918390&r2=918391&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java Wed Mar  3 10:39:30 2010
@@ -24,8 +24,6 @@
 import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.net.URLDecoder;
-
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -74,7 +72,10 @@
         try
         {
             String command = request.getParameter( "command" );
-            if (command != null) command = URLDecoder.decode(command);
+            if ( command != null )
+            {
+                command = WebConsoleUtil.urlDecode( command );
+            }
 
             pw.print( "<span class=\"consolecommand\">-&gt; " );
             pw.print( command == null ? "" : WebConsoleUtil.escapeHtml( command ) );