FELIX-1988 Apply 2.use-utility-methods.patch by Valentin Valchev (thanks)

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@908931 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/DefaultBrandingPlugin.java b/webconsole/src/main/java/org/apache/felix/webconsole/DefaultBrandingPlugin.java
index 4429c24..a326d59 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/DefaultBrandingPlugin.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/DefaultBrandingPlugin.java
@@ -23,6 +23,8 @@
 import java.io.InputStream;
 import java.util.Properties;
 
+import org.apache.commons.io.IOUtils;
+
 
 /**
  * The <code>DefaultBrandingPlugin</code> class is the default implementation
@@ -129,17 +131,11 @@
                 props.load( ins );
             }
             catch ( IOException ignore )
-            {
+            { /* ignore - will use defaults */
             }
             finally
             {
-                try
-                {
-                    ins.close();
-                }
-                catch ( IOException ignore )
-                {
-                }
+                IOUtils.closeQuietly( ins );
             }
         }
 
@@ -156,6 +152,11 @@
     }
 
 
+    /**
+     * Retrieves the shared instance
+     * 
+     * @return the singleton instance of the object
+     */
     public static DefaultBrandingPlugin getInstance()
     {
         if ( instance == null )
@@ -166,54 +167,81 @@
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getBrandName()
+     */
     public String getBrandName()
     {
         return brandName;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getProductName()
+     */
     public String getProductName()
     {
         return productName;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getProductURL()
+     */
     public String getProductURL()
     {
         return productURL;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getProductImage()
+     */
     public String getProductImage()
     {
         return productImage;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getVendorName()
+     */
     public String getVendorName()
     {
         return vendorName;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getVendorURL()
+     */
     public String getVendorURL()
     {
         return vendorURL;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getVendorImage()
+     */
     public String getVendorImage()
     {
         return vendorImage;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getFavIcon()
+     */
     public String getFavIcon()
     {
         return favIcon;
     }
 
 
+    /**
+     * @see org.apache.felix.webconsole.BrandingPlugin#getMainStyleSheet()
+     */
     public String getMainStyleSheet()
     {
         return mainStyleSheet;
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java
index 20636a2..f6ef5c4 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java
@@ -34,6 +34,7 @@
 import org.apache.felix.scr.Reference;
 import org.apache.felix.scr.ScrService;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.BaseWebConsolePlugin;
 import org.apache.felix.webconsole.internal.Util;
 import org.json.JSONArray;
@@ -416,21 +417,13 @@
 
     private void keyVal( JSONWriter jw, String key, Object value )
     {
-        if ( key != null && value != null )
+        try
         {
-            try
-            {
-                jw.object();
-                jw.key( "key" );
-                jw.value( key );
-                jw.key( "value" );
-                jw.value( value );
-                jw.endObject();
-            }
-            catch ( JSONException je )
-            {
-                // don't care
-            }
+            WebConsoleUtil.keyVal( jw, key, value );
+        }
+        catch ( JSONException je )
+        {
+            // don't care
         }
     }
 
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/LogServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/LogServlet.java
index 98bb6ce..f53dfe6 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/LogServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/LogServlet.java
@@ -26,6 +26,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.BaseWebConsolePlugin;
 import org.apache.felix.webconsole.internal.Util;
 import org.json.JSONException;
@@ -63,11 +64,12 @@
 
     protected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException
     {
-        final String minLevel = getParameter( req, "minLevel" );
+        final int minLevel = WebConsoleUtil.getParameterInt( req, "minLevel", LogService.LOG_DEBUG );
+
         resp.setContentType( "application/json" );
         resp.setCharacterEncoding( "utf-8" );
 
-        renderJSON( resp.getWriter(), extractLogLevel( minLevel ) );
+        renderJSON( resp.getWriter(), minLevel );
     }
 
 
@@ -125,28 +127,10 @@
     }
 
 
-    private int extractLogLevel( String minLevel )
-    {
-        if ( minLevel == null )
-            return LogService.LOG_DEBUG;
-
-        int minLogLevel = LogService.LOG_DEBUG;;
-        try
-        {
-            minLogLevel = Integer.parseInt( minLevel );
-        }
-        catch ( Throwable t )
-        {
-            minLogLevel = LogService.LOG_DEBUG;
-        }
-        return minLogLevel;
-    }
-
-
     protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
         IOException
     {
-        final String minLevel = getParameter( request, "minLevel" );
+        final int minLevel = WebConsoleUtil.getParameterInt( request, "minLevel", LogService.LOG_DEBUG );
         final String info = request.getPathInfo();
         if ( info.endsWith( ".json" ) )
         {
@@ -154,7 +138,7 @@
             response.setCharacterEncoding( "UTF-8" );
 
             PrintWriter pw = response.getWriter();
-            this.renderJSON( pw, extractLogLevel( minLevel ) );
+            this.renderJSON( pw, minLevel );
             return;
         }
         super.doGet( request, response );
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BaseUpdateInstallHelper.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BaseUpdateInstallHelper.java
index 152fce7..c0687e6 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BaseUpdateInstallHelper.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BaseUpdateInstallHelper.java
@@ -24,6 +24,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.felix.webconsole.internal.Logger;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
@@ -80,16 +81,7 @@
         }
         finally
         {
-            if ( bundleStream != null )
-            {
-                try
-                {
-                    bundleStream.close();
-                }
-                catch ( IOException ignore )
-                {
-                }
-            }
+            IOUtils.closeQuietly( bundleStream );
         }
 
     }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
index 79cfa25..007a6e6 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
@@ -28,6 +28,7 @@
 import org.apache.felix.bundlerepository.*;
 import org.apache.felix.webconsole.ConfigurationPrinter;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.*;
 import org.apache.felix.webconsole.internal.Logger;
 import org.apache.felix.webconsole.internal.Util;
@@ -661,24 +662,24 @@
 
         jw.key( "props" );
         jw.array();
-        keyVal( jw, "Symbolic Name", bundle.getSymbolicName() );
-        keyVal( jw, "Version", headers.get( Constants.BUNDLE_VERSION ) );
-        keyVal( jw, "Bundle Location", bundle.getLocation() );
-        keyVal( jw, "Last Modification", new Date( bundle.getLastModified() ) );
+        WebConsoleUtil.keyVal( jw, "Symbolic Name", bundle.getSymbolicName() );
+        WebConsoleUtil.keyVal( jw, "Version", headers.get( Constants.BUNDLE_VERSION ) );
+        WebConsoleUtil.keyVal( jw, "Bundle Location", bundle.getLocation() );
+        WebConsoleUtil.keyVal( jw, "Last Modification", new Date( bundle.getLastModified() ) );
 
         String docUrl = ( String ) headers.get( Constants.BUNDLE_DOCURL );
         if ( docUrl != null )
         {
-            keyVal( jw, "Bundle Documentation", docUrl );
+            WebConsoleUtil.keyVal( jw, "Bundle Documentation", docUrl );
         }
 
-        keyVal( jw, "Vendor", headers.get( Constants.BUNDLE_VENDOR ) );
-        keyVal( jw, "Copyright", headers.get( Constants.BUNDLE_COPYRIGHT ) );
-        keyVal( jw, "Description", headers.get( Constants.BUNDLE_DESCRIPTION ) );
+        WebConsoleUtil.keyVal( jw, "Vendor", headers.get( Constants.BUNDLE_VENDOR ) );
+        WebConsoleUtil.keyVal( jw, "Copyright", headers.get( Constants.BUNDLE_COPYRIGHT ) );
+        WebConsoleUtil.keyVal( jw, "Description", headers.get( Constants.BUNDLE_DESCRIPTION ) );
 
-        keyVal( jw, "Start Level", getStartLevel( bundle ) );
+        WebConsoleUtil.keyVal( jw, "Start Level", getStartLevel( bundle ) );
 
-        keyVal( jw, "Bundle Classpath", headers.get( Constants.BUNDLE_CLASSPATH ) );
+        WebConsoleUtil.keyVal( jw, "Bundle Classpath", headers.get( Constants.BUNDLE_CLASSPATH ) );
 
         listFragmentInfo( jw, bundle, pluginRoot );
 
@@ -749,11 +750,11 @@
                     }
                 }
             }
-            keyVal( jw, "Exported Packages", val );
+            WebConsoleUtil.keyVal( jw, "Exported Packages", val );
         }
         else
         {
-            keyVal( jw, "Exported Packages", "None" );
+            WebConsoleUtil.keyVal( jw, "Exported Packages", "None" );
         }
 
         exports = packageAdmin.getExportedPackages( ( Bundle ) null );
@@ -807,7 +808,7 @@
                 val.put( "None" );
             }
 
-            keyVal( jw, "Imported Packages", val );
+            WebConsoleUtil.keyVal( jw, "Imported Packages", val );
         }
 
         if ( !usingBundles.isEmpty() )
@@ -818,7 +819,7 @@
                 Bundle usingBundle = ( Bundle ) ui.next();
                 val.put( getBundleDescriptor( usingBundle, pluginRoot ) );
             }
-            keyVal( jw, "Importing Bundles", val );
+            WebConsoleUtil.keyVal( jw, "Importing Bundles", val );
         }
     }
 
@@ -854,11 +855,11 @@
                     R4Export export = new R4Export( pkgs[i] );
                     collectExport( val, export.getName(), export.getVersion() );
                 }
-                keyVal( jw, "Exported Packages", val );
+                WebConsoleUtil.keyVal( jw, "Exported Packages", val );
             }
             else
             {
-                keyVal( jw, "Exported Packages", "None" );
+                WebConsoleUtil.keyVal( jw, "Exported Packages", "None" );
             }
         }
 
@@ -926,7 +927,7 @@
                     val.put( "None" );
                 }
 
-                keyVal( jw, "Imported Packages", val );
+                WebConsoleUtil.keyVal( jw, "Imported Packages", val );
             }
         }
     }
@@ -972,7 +973,7 @@
             appendProperty( val, refs[i], Constants.SERVICE_DESCRIPTION, "Description" );
             appendProperty( val, refs[i], Constants.SERVICE_VENDOR, "Vendor" );
 
-            keyVal( jw, key, val);
+            WebConsoleUtil.keyVal( jw, key, val);
         }
     }
 
@@ -993,7 +994,7 @@
             val.put( header + ": " + value );
         }
 
-        keyVal( jw, "Manifest Headers", val );
+        WebConsoleUtil.keyVal( jw, "Manifest Headers", val );
     }
 
     private static final String enableLineWrapping(final String value)
@@ -1028,7 +1029,7 @@
                 {
                     val.put( getBundleDescriptor( hostBundles[i], pluginRoot ) );
                 }
-                keyVal( jw, "Host Bundles", val );
+                WebConsoleUtil.keyVal( jw, "Host Bundles", val );
             }
         }
         else
@@ -1041,7 +1042,7 @@
                 {
                     val.put( getBundleDescriptor( fragmentBundles[i], pluginRoot ) );
                 }
-                keyVal( jw, "Fragments Attached", val );
+                WebConsoleUtil.keyVal( jw, "Fragments Attached", val );
             }
         }
 
@@ -1072,20 +1073,6 @@
     }
 
 
-    private void keyVal( JSONWriter jw, String key, Object value ) throws JSONException
-    {
-        if ( key != null && value != null )
-        {
-            jw.object();
-            jw.key( "key" );
-            jw.value( key );
-            jw.key( "value" );
-            jw.value( value );
-            jw.endObject();
-        }
-    }
-
-
     private void collectExport( JSONArray array, String name, Version version )
     {
         StringBuffer val = new StringBuffer();
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java
index 7250306..07179ea 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java
@@ -31,6 +31,7 @@
 
 import org.apache.felix.webconsole.ConfigurationPrinter;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.BaseWebConsolePlugin;
 import org.apache.felix.webconsole.internal.Util;
 import org.json.JSONArray;
@@ -280,20 +281,6 @@
     }
 
 
-    private void keyVal( JSONWriter jw, String key, Object value ) throws JSONException
-    {
-        if ( key != null && value != null )
-        {
-            jw.object();
-            jw.key( "key" );
-            jw.value( key );
-            jw.key( "value" );
-            jw.value( value );
-            jw.endObject();
-        }
-    }
-
-
     private String propertyAsString( ServiceReference ref, String name )
     {
         Object value = ref.getProperty( name );
@@ -343,19 +330,19 @@
             String key = keys[i];
             if ( Constants.SERVICE_PID.equals( key ) )
             {
-                keyVal( jw, "Service PID", service.getProperty( key ) );
+                WebConsoleUtil.keyVal( jw, "Service PID", service.getProperty( key ) );
             }
             else if ( Constants.SERVICE_DESCRIPTION.equals( key ) )
             {
-                keyVal( jw, "Service Description", service.getProperty( key ) );
+                WebConsoleUtil.keyVal( jw, "Service Description", service.getProperty( key ) );
             }
             else if ( Constants.SERVICE_VENDOR.equals( key ) )
             {
-                keyVal( jw, "Service Vendor", service.getProperty( key ) );
+                WebConsoleUtil.keyVal( jw, "Service Vendor", service.getProperty( key ) );
             }
             else if ( !Constants.OBJECTCLASS.equals( key ) && !Constants.SERVICE_ID.equals( key ) )
             {
-                keyVal( jw, key, service.getProperty( key ) );
+                WebConsoleUtil.keyVal( jw, key, service.getProperty( key ) );
             }
 
         }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/SetStartLevelAction.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/SetStartLevelAction.java
index 5fb9681..d8046ae 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/SetStartLevelAction.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/SetStartLevelAction.java
@@ -21,6 +21,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.felix.webconsole.Action;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.BaseManagementPlugin;
 import org.osgi.service.startlevel.StartLevel;
 
@@ -54,13 +55,13 @@
         StartLevel sl = getStartLevel();
         if ( sl != null )
         {
-            int bundleSL = this.getParameterInt( request, "bundleStartLevel" );
+            int bundleSL = WebConsoleUtil.getParameterInt( request, "bundleStartLevel", -1 );
             if ( bundleSL > 0 && bundleSL != sl.getInitialBundleStartLevel() )
             {
                 sl.setInitialBundleStartLevel( bundleSL );
             }
 
-            int systemSL = this.getParameterInt( request, "systemStartLevel" );
+            int systemSL = WebConsoleUtil.getParameterInt( request, "systemStartLevel", -1 );
             if ( systemSL > 0 && systemSL != sl.getStartLevel() )
             {
                 sl.setStartLevel( systemSL );
@@ -71,18 +72,4 @@
     }
 
 
-    private int getParameterInt( HttpServletRequest request, String name )
-    {
-        try
-        {
-            return Integer.parseInt( request.getParameter( name ) );
-        }
-        catch ( NumberFormatException nfe )
-        {
-            // don't care
-        }
-
-        return -1;
-    }
-
 }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/UpdateHelper.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/UpdateHelper.java
index 8980e09..73d7d74 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/UpdateHelper.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/UpdateHelper.java
@@ -23,6 +23,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+
+import org.apache.commons.io.IOUtils;
 import org.apache.felix.webconsole.internal.obr.DeployerThread;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
@@ -116,16 +118,7 @@
         }
         finally
         {
-            if ( input != null )
-            {
-                try
-                {
-                    input.close();
-                }
-                catch ( IOException ignore )
-                {
-                }
-            }
+            IOUtils.closeQuietly( input );
         }
 
         // not installed from the bundle location
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java
index 599f301..19c1041 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java
@@ -28,6 +28,7 @@
 import org.apache.commons.fileupload.FileItem;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.BaseWebConsolePlugin;
 import org.apache.felix.webconsole.internal.Util;
 import org.json.JSONException;
@@ -79,7 +80,7 @@
     protected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException
     {
         // get the uploaded data
-        final String action = getParameter( req, Util.PARAM_ACTION );
+        final String action = WebConsoleUtil.getParameter( req, Util.PARAM_ACTION );
         if ( ACTION_DEPLOY.equals( action ) )
         {
             Map params = ( Map ) req.getAttribute( AbstractWebConsolePlugin.ATTR_FILEUPLOAD );
@@ -232,8 +233,8 @@
 
         jw.key( "props" );
         jw.array();
-        keyVal( jw, "Package Name", pack.getName() );
-        keyVal( jw, "Version", pack.getVersion() );
+        WebConsoleUtil.keyVal( jw, "Package Name", pack.getName() );
+        WebConsoleUtil.keyVal( jw, "Version", pack.getVersion() );
 
         final StringBuffer buffer = new StringBuffer();
         for ( int i = 0; i < pack.getBundleInfos().length; i++ )
@@ -243,24 +244,11 @@
             buffer.append( pack.getBundleInfos()[i].getVersion() );
             buffer.append( "<br/>" );
         }
-        keyVal( jw, "Bundles", buffer.toString() );
+        WebConsoleUtil.keyVal( jw, "Bundles", buffer.toString() );
 
         jw.endArray();
 
         jw.endObject();
     }
 
-
-    private void keyVal( JSONWriter jw, String key, Object value ) throws JSONException
-    {
-        if ( key != null && value != null )
-        {
-            jw.object();
-            jw.key( "key" );
-            jw.value( key );
-            jw.key( "value" );
-            jw.value( value );
-            jw.endObject();
-        }
-    }
 }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/i18n/ConsolePropertyResourceBundle.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/i18n/ConsolePropertyResourceBundle.java
index e73d482..f70b07e 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/i18n/ConsolePropertyResourceBundle.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/i18n/ConsolePropertyResourceBundle.java
@@ -26,6 +26,8 @@
 import java.util.Properties;
 import java.util.ResourceBundle;
 
+import org.apache.commons.io.IOUtils;
+
 
 class ConsolePropertyResourceBundle extends ResourceBundle
 {
@@ -47,20 +49,11 @@
                 props.load( ins );
             }
             catch ( IOException ignore )
-            {
+            { /* ignore */
             }
             finally
             {
-                if ( ins != null )
-                {
-                    try
-                    {
-                        ins.close();
-                    }
-                    catch ( IOException ignore )
-                    {
-                    }
-                }
+                IOUtils.closeQuietly( ins );
             }
 
         }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
index af63df6..27b3ea3 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
@@ -522,31 +522,10 @@
 
 
         // helper method filter the string for "<" before writing
-        private void writeFiltered( final String string )
+        private void writeFiltered( String string )
         {
-            if ( string.indexOf( '<' ) >= 0 )
-            {
-                // TODO: replace with WebConsoleUtil.escapeHtml()
-                // this "convoluted" code replaces "<" by "&lt;"
-                final StringTokenizer tokener = new StringTokenizer( string, "<", true );
-                while ( tokener.hasMoreElements() )
-                {
-                    final String token = tokener.nextToken();
-                    if ( "<".equals( token ) )
-                    {
-                        super.write( "&lt;" );
-                    }
-                    else
-                    {
-                        super.write( token );
-                    }
-                }
-            }
-            else
-            {
-                // no filtering needed write as is
-                super.write( string, 0, string.length() );
-            }
+            string = WebConsoleUtil.escapeHtml(string); // filtering
+            super.write( string, 0, string.length() );
         }
     }
 
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/LicenseServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/LicenseServlet.java
index cc6f15b..ef819bd 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/LicenseServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/LicenseServlet.java
@@ -33,6 +33,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
 import org.apache.felix.webconsole.internal.OsgiManagerPlugin;
@@ -221,16 +222,7 @@
                 }
                 finally
                 {
-                    if ( ins != null )
-                    {
-                        try
-                        {
-                            ins.close();
-                        }
-                        catch ( IOException ignore )
-                        {
-                        }
-                    }
+                    IOUtils.closeQuietly( ins );
                 }
 
                 jw.endArray();
@@ -262,32 +254,16 @@
 
     private String readResource( InputStream resource ) throws IOException
     {
-        Reader r = null;
-        StringBuffer buffer = new StringBuffer();
         try
         {
-            char[] buf = new char[1024];
-            r = new InputStreamReader( resource, "ISO-8859-1" );
-            int num;
-            while ( ( num = r.read( buf ) ) >= 0 )
-            {
-                buffer.append( buf, 0, num );
-            }
+            // return new String(IOUtils.toCharArray(resource, "ISO-8859-1"));
+            // the method below is faster that the one above
+            return new String(IOUtils.toByteArray(resource), "ISO-8859-1");
         }
         finally
         {
-            if ( r != null )
-            {
-                try
-                {
-                    r.close();
-                }
-                catch ( IOException ignore )
-                {
-                }
-            }
+            IOUtils.closeQuietly(resource);
         }
-        return buffer.toString();
     }
 
 
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java
index 77de81a..36d5bad 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java
@@ -32,6 +32,7 @@
 import org.apache.felix.shell.ShellService;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.OsgiManagerPlugin;
 import org.apache.felix.webconsole.internal.Util;
 import org.osgi.framework.BundleContext;
@@ -71,7 +72,7 @@
             String command = request.getParameter( "command" );
 
             pw.print( "<span class=\"consolecommand\">-&gt; " );
-            pw.print( command == null ? "" : escapeHtml( command ) );
+            pw.print( command == null ? "" : WebConsoleUtil.escapeHtml( command ) );
             pw.println( "</span><br />" );
 
             if ( command != null && !"".equals( command ) )
@@ -86,12 +87,12 @@
                         true ) );
                     if ( baosOut.size() > 0 )
                     {
-                        pw.print( escapeHtml( new String( baosOut.toByteArray() ) ) );
+                        pw.print( WebConsoleUtil.escapeHtml( new String( baosOut.toByteArray() ) ) );
                     }
                     if ( baosErr.size() > 0 )
                     {
                         pw.print( "<span class=\"error\">" );
-                        pw.print( escapeHtml( new String( baosErr.toByteArray() ) ) );
+                        pw.print( WebConsoleUtil.escapeHtml( new String( baosErr.toByteArray() ) ) );
                         pw.println( "</span>" );
                     }
                 }
@@ -108,7 +109,7 @@
             pw.print( "<span class=\"error\">" );
             StringWriter out = new StringWriter();
             t.printStackTrace( new PrintWriter( out, true ) );
-            pw.print( escapeHtml( out.toString() ) );
+            pw.print( WebConsoleUtil.escapeHtml( out.toString() ) );
             pw.println( "</span>" );
         }
     }
@@ -182,42 +183,4 @@
         super.deactivate();
     }
 
-
-    protected String escapeHtml( String text )
-    {
-        StringBuffer sb = new StringBuffer();
-        for ( int i = 0; i < text.length(); i++ )
-        {
-            char ch = text.charAt( i );
-            if ( ch == '<' )
-            {
-                sb.append( "&lt;" );
-            }
-            else if ( ch == '>' )
-            {
-                sb.append( "&gt;" );
-            }
-            else if ( ch == '&' )
-            {
-                sb.append( "&amp;" );
-            }
-            else if ( ch == ' ' )
-            {
-                sb.append( "&nbsp;" );
-            }
-            else if ( ch == '\r' )
-            {
-            }
-            else if ( ch == '\n' )
-            {
-                sb.append( "<br />\r\n" );
-            }
-            else
-            {
-                sb.append( ch );
-            }
-        }
-
-        return ( sb.toString() );
-    }
 }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java
index 6e54ad3..8a64a14 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java
@@ -42,6 +42,7 @@
 import org.apache.felix.webconsole.Action;
 import org.apache.felix.webconsole.BrandingPlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.WebConsoleUtil;
 import org.apache.felix.webconsole.internal.Logger;
 import org.apache.felix.webconsole.internal.OsgiManagerPlugin;
 import org.apache.felix.webconsole.internal.Util;
@@ -428,7 +429,7 @@
     protected boolean handleAction( HttpServletRequest req, HttpServletResponse resp ) throws IOException, ServletException
     {
         // check action
-        String actionName = AbstractWebConsolePlugin.getParameter( req, Util.PARAM_ACTION );
+        String actionName = WebConsoleUtil.getParameter( req, Util.PARAM_ACTION );
         if ( actionName != null )
         {
             Action action = ( Action ) this.operations.get( actionName );
@@ -449,7 +450,7 @@
                 }
 
                 // maybe overwrite redirect
-                if ( PARAM_NO_REDIRECT_AFTER_ACTION.equals( AbstractWebConsolePlugin.getParameter( req,
+                if ( PARAM_NO_REDIRECT_AFTER_ACTION.equals( WebConsoleUtil.getParameter( req,
                     PARAM_NO_REDIRECT_AFTER_ACTION ) ) )
                 {
                     resp.setStatus( HttpServletResponse.SC_OK );