You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2009/09/28 09:16:27 UTC

svn commit: r819463 - in /sling/trunk/bundles/commons/mime: pom.xml src/main/java/org/apache/sling/commons/mime/internal/MimeTypeServiceImpl.java src/main/java/org/apache/sling/commons/mime/internal/MimeTypeWebConsolePlugin.java

Author: fmeschbe
Date: Mon Sep 28 07:16:27 2009
New Revision: 819463

URL: http://svn.apache.org/viewvc?rev=819463&view=rev
Log:
SLING-1128 Use Tree Table to display known MIME types and remove dependency
to the Web Console plugin by leveraging the new dependency-less plugin
support of Web Console 2.0.0 (under vote right now)

Modified:
    sling/trunk/bundles/commons/mime/pom.xml
    sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeServiceImpl.java
    sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeWebConsolePlugin.java

Modified: sling/trunk/bundles/commons/mime/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/mime/pom.xml?rev=819463&r1=819462&r2=819463&view=diff
==============================================================================
--- sling/trunk/bundles/commons/mime/pom.xml (original)
+++ sling/trunk/bundles/commons/mime/pom.xml Mon Sep 28 07:16:27 2009
@@ -64,8 +64,7 @@
                             org.apache.sling.commons.mime.internal
                         </Private-Package>
                         <Import-Package>
-                            javax.servlet.*;
-                            org.apache.felix.webconsole;resolution:=optional,
+                            javax.servlet.*;resolution:=optional,
                             *
                         </Import-Package>
                     </instructions>
@@ -105,11 +104,6 @@
             <artifactId>servlet-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.webconsole</artifactId>
-            <version>1.2.0</version>
-        </dependency>
-        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>

Modified: sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeServiceImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeServiceImpl.java?rev=819463&r1=819462&r2=819463&view=diff
==============================================================================
--- sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeServiceImpl.java (original)
+++ sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeServiceImpl.java Mon Sep 28 07:16:27 2009
@@ -29,7 +29,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.felix.webconsole.WebConsoleConstants;
 import org.apache.sling.commons.mime.MimeTypeProvider;
 import org.apache.sling.commons.mime.MimeTypeService;
 import org.apache.sling.commons.osgi.OsgiUtil;
@@ -43,7 +42,7 @@
 /**
  * The <code>MimeTypeServiceImpl</code> is the official implementation of the
  * {@link MimeTypeService} interface.
- * 
+ *
  * @scr.component immediate="false" label="%mime.service.name"
  *                description="%mime.service.description"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
@@ -74,8 +73,6 @@
 
     private List<MimeTypeProvider> typeProviderList = new ArrayList<MimeTypeProvider>();
 
-    private MimeTypeWebConsolePlugin webConsolePlugin;
-
     private ServiceRegistration webConsolePluginService;
 
     // --------- MimeTypeService interface
@@ -207,14 +204,14 @@
 
         try {
             MimeTypeWebConsolePlugin plugin = new MimeTypeWebConsolePlugin(this);
-            plugin.activate(context.getBundleContext());
 
             Dictionary<String, String> props = new Hashtable<String, String>();
-            props.put(WebConsoleConstants.PLUGIN_LABEL, plugin.getLabel());
+            props.put("felix.webconsole.label", MimeTypeWebConsolePlugin.LABEL);
+            props.put("felix.webconsole.title", MimeTypeWebConsolePlugin.TITLE);
+            props.put("felix.webconsole.css", MimeTypeWebConsolePlugin.CSS_REFS);
 
             webConsolePluginService = context.getBundleContext().registerService(
-                WebConsoleConstants.SERVICE_NAME, plugin, props);
-            webConsolePlugin = plugin;
+                "javax.servlet.Servlet", plugin, props);
         } catch (Throwable t) {
             // don't care, we thus don't have the console plugin
         }
@@ -226,12 +223,6 @@
         if (webConsolePluginService != null) {
             webConsolePluginService.unregister();
             webConsolePluginService = null;
-
-        }
-
-        if (webConsolePlugin != null) {
-            webConsolePlugin.deactivate();
-            webConsolePlugin = null;
         }
     }
 
@@ -308,7 +299,7 @@
      * Splits the <code>line</code> on whitespace an registers the MIME type
      * mappings provided the line contains more than one whitespace separated
      * fields.
-     * 
+     *
      * @throws NullPointerException if <code>line</code> is <code>null</code>.
      */
     private void registerMimeType(String line) {

Modified: sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeWebConsolePlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeWebConsolePlugin.java?rev=819463&r1=819462&r2=819463&view=diff
==============================================================================
--- sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeWebConsolePlugin.java (original)
+++ sling/trunk/bundles/commons/mime/src/main/java/org/apache/sling/commons/mime/internal/MimeTypeWebConsolePlugin.java Mon Sep 28 07:16:27 2009
@@ -19,29 +19,30 @@
 package org.apache.sling.commons.mime.internal;
 
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.net.URL;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.Map.Entry;
 
-import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.felix.webconsole.AbstractWebConsolePlugin;
-
-class MimeTypeWebConsolePlugin extends AbstractWebConsolePlugin {
+class MimeTypeWebConsolePlugin extends HttpServlet {
 
     /** Serial Version */
     private static final long serialVersionUID = -2025952303202431607L;
 
-    private static final String LABEL = "mimetypes";
+    static final String LABEL = "mimetypes";
+
+    static final String TITLE = "MIME Types";
+
+    static final String RES_LOC = LABEL + "/res";
 
-    private static final String TITLE = "MIME Types";
+    static final String CSS_REFS = RES_LOC + "/jquery.treeTable.css";
 
     private final MimeTypeServiceImpl mimeTypeService;
 
@@ -50,27 +51,8 @@
     }
 
     @Override
-    public String getLabel() {
-        return LABEL;
-    }
-
-    @Override
-    public String getTitle() {
-        return TITLE;
-    }
-
-    @Override
     protected void doGet(HttpServletRequest request,
-            HttpServletResponse response) throws ServletException, IOException {
-
-        if (!spoolResource(request, response)) {
-            super.doGet(request, response);
-        }
-    }
-
-    @Override
-    protected void renderContent(HttpServletRequest req, HttpServletResponse res)
-            throws IOException {
+            HttpServletResponse response) throws IOException {
 
         Map<String, Set<String>> mimetab = new TreeMap<String, Set<String>>();
 
@@ -96,12 +78,9 @@
             numExt++;
         }
 
-        PrintWriter pw = res.getWriter();
+        PrintWriter pw = response.getWriter();
 
-        String resLoc = getLabel() + "/res";
-        pw.println("<link href='" + resLoc
-            + "/jquery.treeTable.css' rel='stylesheet' type='text/css' />");
-        pw.println("<script type='text/javascript' src='" + resLoc
+        pw.println("<script type='text/javascript' src='" + RES_LOC
             + "/jquery.treeTable.min.js'></script>");
         pw.println("<script type='text/javascript'>");
         pw.println("  $(document).ready(function()  {");
@@ -166,34 +145,21 @@
         return (slash > 0) ? type.substring(0, slash) : type;
     }
 
-    private boolean spoolResource(HttpServletRequest request,
-            HttpServletResponse response) throws IOException {
+    /**
+     * Resource Provider method for the Web Console 2 integration
+     * @param resourcePath
+     * @return
+     */
+    @SuppressWarnings("unused")
+    private URL getResource(final String resourcePath) {
 
-        String pi = request.getPathInfo();
-        int rPi = pi.indexOf("/res/");
+        final int rPi = resourcePath.indexOf("/res/");
         if (rPi >= 0) {
-            pi = pi.substring(rPi);
-            InputStream ins = getClass().getResourceAsStream(pi);
-            if (ins != null) {
-                try {
-                    response.setContentType(getServletContext().getMimeType(pi));
-                    OutputStream out = response.getOutputStream();
-                    byte[] buf = new byte[2048];
-                    int rd;
-                    while ((rd = ins.read(buf)) >= 0) {
-                        out.write(buf, 0, rd);
-                    }
-                    return true;
-                } finally {
-                    try {
-                        ins.close();
-                    } catch (IOException ignore) {
-                    }
-                }
-            }
+            final String path = resourcePath.substring(rPi);
+            return getClass().getResource(path);
         }
 
-        return false;
+        return null;
     }
 
 }