You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/05/21 17:52:30 UTC
svn commit: r1680915 - in
/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal:
handler/ registry/ runtime/dto/ service/ whiteboard/
Author: cziegeler
Date: Thu May 21 15:52:29 2015
New Revision: 1680915
URL: http://svn.apache.org/r1680915
Log:
FELIX-4060 : Implement HTTP Whiteboard Service (RFC-189). Clean up code, add some javadocs
Removed:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ResourceServlet.java
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterConfigImpl.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletConfigImpl.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FailedDTOHolder.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/ResourceServlet.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterConfigImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterConfigImpl.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterConfigImpl.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterConfigImpl.java Thu May 21 15:52:29 2015
@@ -23,6 +23,9 @@ import java.util.Map;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
+/**
+ * Implementation of the filter configuration.
+ */
public final class FilterConfigImpl implements FilterConfig
{
private final String name;
@@ -49,7 +52,7 @@ public final class FilterConfigImpl impl
}
@Override
- public String getInitParameter(String name)
+ public String getInitParameter(final String name)
{
return this.initParams.get(name);
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java Thu May 21 15:52:29 2015
@@ -31,7 +31,8 @@ import org.apache.felix.http.base.intern
import org.osgi.service.http.runtime.dto.DTOConstants;
/**
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ * The filter handler handles the initialization and destruction of filter
+ * objects.
*/
public class FilterHandler implements Comparable<FilterHandler>
{
@@ -116,7 +117,7 @@ public class FilterHandler implements Co
{
filter.init(new FilterConfigImpl(getName(), getContext(), getFilterInfo().getInitParameters()));
}
- catch (final ServletException e)
+ catch (final Exception e)
{
SystemLogger.error(this.getFilterInfo().getServiceReference(),
"Error during calling init() on filter " + this.filter,
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java Thu May 21 15:52:29 2015
@@ -23,7 +23,7 @@ import org.apache.felix.http.base.intern
import org.apache.felix.http.base.internal.service.HttpServiceFactory;
/**
- * Servlet holder for filters registered through the ext http service.
+ * Servlet handler for filters registered through the ext http service.
*/
public final class HttpServiceFilterHandler extends FilterHandler
{
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletConfigImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletConfigImpl.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletConfigImpl.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletConfigImpl.java Thu May 21 15:52:29 2015
@@ -23,6 +23,9 @@ import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
+/**
+ * Implementation of the servlet configuration
+ */
public final class ServletConfigImpl implements ServletConfig
{
private final String name;
@@ -51,7 +54,7 @@ public final class ServletConfigImpl imp
}
@Override
- public String getInitParameter(String name)
+ public String getInitParameter(final String name)
{
return this.initParams.get(name);
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java Thu May 21 15:52:29 2015
@@ -29,7 +29,8 @@ import org.apache.felix.http.base.intern
import org.osgi.service.http.runtime.dto.DTOConstants;
/**
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ * The servlet handler handles the initialization and destruction of
+ * a servlet.
*/
public abstract class ServletHandler implements Comparable<ServletHandler>
{
@@ -120,7 +121,7 @@ public abstract class ServletHandler imp
{
servlet.init(new ServletConfigImpl(getName(), getContext(), getServletInfo().getInitParameters()));
}
- catch (final ServletException e)
+ catch (final Exception e)
{
SystemLogger.error(this.getServletInfo().getServiceReference(),
"Error during calling init() on servlet " + this.servlet,
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java Thu May 21 15:52:29 2015
@@ -57,7 +57,10 @@ public final class WhiteboardFilterHandl
final int reason = super.init();
if ( reason != -1 )
{
- so.ungetService(this.getFilter());
+ if ( so != null )
+ {
+ so.ungetService(this.getFilter());
+ }
this.setFilter(null);
}
return reason;
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java Thu May 21 15:52:29 2015
@@ -57,7 +57,10 @@ public final class WhiteboardServletHand
final int reason = super.init();
if ( reason != -1 )
{
- so.ungetService(this.getServlet());
+ if ( so != null )
+ {
+ so.ungetService(this.getServlet());
+ }
this.setServlet(null);
}
return reason;
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java Thu May 21 15:52:29 2015
@@ -43,7 +43,7 @@ import org.osgi.service.http.runtime.dto
* for a single servlet context.
*
* TODO - sort active servlet mappings by pattern length, longest first (avoids looping over all)
- *
+ * TODO - we could collapse all three maps into a single map (activeServletMappings, inactiveServletMappings and statusMapping)
*/
public final class ServletRegistry
{
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FailedDTOHolder.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FailedDTOHolder.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FailedDTOHolder.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FailedDTOHolder.java Thu May 21 15:52:29 2015
@@ -19,8 +19,8 @@
package org.apache.felix.http.base.internal.runtime.dto;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import org.apache.felix.http.base.internal.logger.SystemLogger;
@@ -41,17 +41,17 @@ import org.osgi.service.http.runtime.dto
public final class FailedDTOHolder
{
- public Collection<FailedFilterDTO> failedFilterDTOs = new ArrayList<FailedFilterDTO>();
+ public final List<FailedFilterDTO> failedFilterDTOs = new ArrayList<FailedFilterDTO>();
- public Collection<FailedListenerDTO> failedListenerDTOs = new ArrayList<FailedListenerDTO>();
+ public final List<FailedListenerDTO> failedListenerDTOs = new ArrayList<FailedListenerDTO>();
- public Collection<FailedServletDTO> failedServletDTOs = new ArrayList<FailedServletDTO>();
+ public final List<FailedServletDTO> failedServletDTOs = new ArrayList<FailedServletDTO>();
- public Collection<FailedResourceDTO> failedResourceDTOs = new ArrayList<FailedResourceDTO>();
+ public final List<FailedResourceDTO> failedResourceDTOs = new ArrayList<FailedResourceDTO>();
- public Collection<FailedErrorPageDTO> failedErrorPageDTOs = new ArrayList<FailedErrorPageDTO>();
+ public final List<FailedErrorPageDTO> failedErrorPageDTOs = new ArrayList<FailedErrorPageDTO>();
- public Collection<FailedServletContextDTO> failedServletContextDTO = new ArrayList<FailedServletContextDTO>();
+ public final List<FailedServletContextDTO> failedServletContextDTO = new ArrayList<FailedServletContextDTO>();
public void add(Map<AbstractInfo<?>, Integer> failureInfos)
{
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/ResourceServlet.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/ResourceServlet.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/ResourceServlet.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/ResourceServlet.java Thu May 21 15:52:29 2015
@@ -28,31 +28,29 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+/**
+ * The resource servlet
+ */
public final class ResourceServlet extends HttpServlet
{
- private final String path;
+ private static final long serialVersionUID = 1L;
- public ResourceServlet(String path)
+ /** The path of the resource registration. */
+ private final String prefix;
+
+ public ResourceServlet(final String prefix)
{
- this.path = path;
+ this.prefix = prefix;
}
@Override
- protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
+ protected void doGet(final HttpServletRequest req, final HttpServletResponse res)
+ throws ServletException, IOException
{
- String target = req.getPathInfo();
- if (target == null)
- {
- target = "";
- }
-
- if (!target.startsWith("/"))
- {
- target += "/" + target;
- }
+ final String target = req.getPathInfo();
+ final String resName = (target == null ? this.prefix : this.prefix + target);
- String resName = this.path + target;
- URL url = getServletContext().getResource(resName);
+ final URL url = getServletContext().getResource(resName);
if (url == null)
{
@@ -64,15 +62,17 @@ public final class ResourceServlet exten
}
}
- private void handle(HttpServletRequest req, HttpServletResponse res, URL url, String resName) throws IOException
+ private void handle(final HttpServletRequest req,
+ final HttpServletResponse res, final URL url, final String resName)
+ throws IOException
{
- String contentType = getServletContext().getMimeType(resName);
+ final String contentType = getServletContext().getMimeType(resName);
if (contentType != null)
{
res.setContentType(contentType);
}
- long lastModified = getLastModified(url);
+ final long lastModified = getLastModified(url);
if (lastModified != 0)
{
res.setDateHeader("Last-Modified", lastModified);
@@ -88,26 +88,26 @@ public final class ResourceServlet exten
}
}
- private long getLastModified(URL url)
+ private long getLastModified(final URL url)
{
long lastModified = 0;
try
{
- URLConnection conn = url.openConnection();
+ final URLConnection conn = url.openConnection();
lastModified = conn.getLastModified();
}
- catch (Exception e)
+ catch (final Exception e)
{
// Do nothing
}
if (lastModified == 0)
{
- String filepath = url.getPath();
+ final String filepath = url.getPath();
if (filepath != null)
{
- File f = new File(filepath);
+ final File f = new File(filepath);
if (f.exists())
{
lastModified = f.lastModified();
@@ -126,7 +126,7 @@ public final class ResourceServlet exten
return resTimestamp == 0 || modSince == -1 || resTimestamp > modSince;
}
- private void copyResource(URL url, HttpServletResponse res) throws IOException
+ private void copyResource(final URL url, final HttpServletResponse res) throws IOException
{
URLConnection conn = null;
OutputStream os = null;
@@ -138,7 +138,7 @@ public final class ResourceServlet exten
is = conn.getInputStream();
os = res.getOutputStream();
- // FELIX-3987 content length should be set *before* any streaming is done
+ // FELIX-3987 content length should be set *before* any streaming is done
// as headers should be written before the content is actually written...
int len = getContentLength(conn);
if (len >= 0)
@@ -168,20 +168,20 @@ public final class ResourceServlet exten
}
}
- private int getContentLength(URLConnection conn)
+ private int getContentLength(final URLConnection conn)
{
int length = -1;
length = conn.getContentLength();
if (length < 0)
{
- // Unknown, try whether it is a file, and if so, use the file
+ // Unknown, try whether it is a file, and if so, use the file
// API to get the length of the content...
String path = conn.getURL().getPath();
if (path != null)
{
File f = new File(path);
- // In case more than 2GB is streamed
+ // In case more than 2GB is streamed
if (f.length() < Integer.MAX_VALUE)
{
length = (int) f.length();
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java?rev=1680915&r1=1680914&r2=1680915&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java Thu May 21 15:52:29 2015
@@ -27,6 +27,7 @@ import org.apache.felix.http.base.intern
import org.apache.felix.http.base.internal.runtime.FilterInfo;
import org.apache.felix.http.base.internal.runtime.ResourceInfo;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
+import org.apache.felix.http.base.internal.service.ResourceServlet;
import org.osgi.framework.BundleContext;
public final class WhiteboardHttpService