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;
}
}