You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2011/10/14 18:47:35 UTC
svn commit: r1183418 - in /sling/trunk/bundles/engine/src/main:
java/org/apache/sling/engine/impl/SlingMainServlet.java
java/org/apache/sling/engine/impl/request/RequestHistoryConsolePlugin.java
resources/OSGI-INF/metatype/metatype.properties
Author: justin
Date: Fri Oct 14 16:47:34 2011
New Revision: 1183418
URL: http://svn.apache.org/viewvc?rev=1183418&view=rev
Log:
SLING-2247 - adding support for limiting the recorded requests in the Recent Requests web console plugin
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestHistoryConsolePlugin.java
sling/trunk/bundles/engine/src/main/resources/OSGI-INF/metatype/metatype.properties
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java?rev=1183418&r1=1183417&r2=1183418&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java Fri Oct 14 16:47:34 2011
@@ -20,10 +20,13 @@ package org.apache.sling.engine.impl;
import java.io.IOException;
import java.net.SocketException;
+import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
@@ -37,6 +40,7 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.PropertyUnbounded;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
@@ -103,6 +107,9 @@ public class SlingMainServlet extends Ge
@Property(intValue = RequestHistoryConsolePlugin.STORED_REQUESTS_COUNT)
private static final String PROP_MAX_RECORD_REQUESTS = "sling.max.record.requests";
+ @Property(unbounded=PropertyUnbounded.ARRAY)
+ private static final String PROP_TRACK_PATTERNS_REQUESTS = "sling.store.pattern.requests";
+
@Property
private static final String PROP_DEFAULT_PARAMETER_ENCODING = "sling.default.parameter.encoding";
@@ -406,7 +413,12 @@ public class SlingMainServlet extends Ge
int maxRequests = OsgiUtil.toInteger(
componentConfig.get(PROP_MAX_RECORD_REQUESTS),
RequestHistoryConsolePlugin.STORED_REQUESTS_COUNT);
- RequestHistoryConsolePlugin.initPlugin(bundleContext, maxRequests);
+ String[] patterns = OsgiUtil.toStringArray(componentConfig.get(PROP_TRACK_PATTERNS_REQUESTS), new String[0]);
+ List<Pattern> compiledPatterns = new ArrayList<Pattern>(patterns.length);
+ for (String pattern : patterns) {
+ compiledPatterns.add(Pattern.compile(pattern));
+ }
+ RequestHistoryConsolePlugin.initPlugin(bundleContext, maxRequests, compiledPatterns);
} catch (Throwable t) {
log.debug(
"Unable to register web console request recorder plugin.", t);
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestHistoryConsolePlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestHistoryConsolePlugin.java?rev=1183418&r1=1183417&r2=1183418&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestHistoryConsolePlugin.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestHistoryConsolePlugin.java Fri Oct 14 16:47:34 2011
@@ -27,6 +27,7 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.regex.Pattern;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -70,9 +71,9 @@ public class RequestHistoryConsolePlugin
}
}
- public static void initPlugin(BundleContext context, int maxRequests) {
+ public static void initPlugin(BundleContext context, int maxRequests, List<Pattern> storePatterns) {
if (instance == null) {
- Plugin tmp = new Plugin(maxRequests);
+ Plugin tmp = new Plugin(maxRequests, storePatterns);
final Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put(Constants.SERVICE_DESCRIPTION,
"Web Console Plugin to display information about recent Sling requests");
@@ -104,11 +105,14 @@ public class RequestHistoryConsolePlugin
public static final class Plugin extends HttpServlet {
private final RequestInfoMap requests;
+
+ private final List<Pattern> storePatterns;
- Plugin(int maxRequests) {
- requests = (maxRequests > 0)
+ Plugin(int maxRequests, List<Pattern> storePatterns) {
+ this.requests = (maxRequests > 0)
? new RequestInfoMap(maxRequests)
: null;
+ this.storePatterns = storePatterns;
}
public void deactivate() {
@@ -122,9 +126,23 @@ public class RequestHistoryConsolePlugin
private void addRequest(SlingHttpServletRequest r) {
if (requests != null) {
- synchronized (requests) {
- RequestInfo info = new RequestInfo(r);
- requests.put(info.getKey(), info);
+ String requestPath = r.getPathInfo();
+ boolean accept = true;
+ if (storePatterns != null && storePatterns.size() > 0) {
+ accept = false;
+ for (Pattern pattern : storePatterns) {
+ if (pattern.matcher(requestPath).matches()) {
+ accept = true;
+ break;
+ }
+ }
+ }
+
+ if (accept) {
+ synchronized (requests) {
+ RequestInfo info = new RequestInfo(r);
+ requests.put(info.getKey(), info);
+ }
}
}
}
Modified: sling/trunk/bundles/engine/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1183418&r1=1183417&r2=1183418&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/resources/OSGI-INF/metatype/metatype.properties (original)
+++ sling/trunk/bundles/engine/src/main/resources/OSGI-INF/metatype/metatype.properties Fri Oct 14 16:47:34 2011
@@ -50,6 +50,9 @@ sling.max.record.requests.description =
internally recorded for display on the "Recent Requests" Web Console page. If \
this value is less than or equal to zero, no requests are internally kept. The \
default value is 20.
+sling.store.pattern.requests.name = Recorded Request Path Patterns
+sling.store.pattern.requests.description = One or more regular expressions which \
+ limit the requests which are stored by the "Recent Requests" Web Console page.
sling.filter.compat.mode.name = Filter Compat Mode
sling.filter.compat.mode.description = This switch controls the handling of \
servlet filters. By default only filters with a scope property are registered. \