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

svn commit: r1526891 - in /sling/trunk/contrib/extensions/startup-filter/src: main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java

Author: bdelacretaz
Date: Fri Sep 27 13:16:36 2013
New Revision: 1526891

URL: http://svn.apache.org/r1526891
Log:
SLING-3119 - setup startup filter as a plain Filter instead of a Sling one. Contributed by Ben Peter, thanks!

Modified:
    sling/trunk/contrib/extensions/startup-filter/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java
    sling/trunk/contrib/extensions/startup-filter/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java

Modified: sling/trunk/contrib/extensions/startup-filter/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/startup-filter/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java?rev=1526891&r1=1526890&r2=1526891&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/startup-filter/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java (original)
+++ sling/trunk/contrib/extensions/startup-filter/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java Fri Sep 27 13:16:36 2013
@@ -43,6 +43,7 @@ import org.apache.sling.startupfilter.St
 import org.apache.sling.startupfilter.StartupFilterDisabler;
 import org.apache.sling.startupfilter.StartupInfoProvider;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
@@ -74,9 +75,13 @@ public class StartupFilterImpl implement
     @Property(value=DEFAULT_MESSAGE)
     public static final String DEFAULT_MESSAGE_PROP = "default.message";
     private String defaultMessage;
-    
+
     @Reference(cardinality=ReferenceCardinality.OPTIONAL_UNARY, policy=ReferencePolicy.DYNAMIC)
     private StartupFilterDisabler startupFilterDisabler;
+
+    private final String FRAMEWORK_PROP_MANAGER_ROOT = "felix.webconsole.manager.root";
+    static final String DEFAULT_MANAGER_ROOT = "/system/console";
+    private String managerRoot;
     
     /** @inheritDoc */
     public void doFilter(ServletRequest request, ServletResponse sr, FilterChain chain) throws IOException, ServletException {
@@ -153,6 +158,10 @@ public class StartupFilterImpl implement
                 
         prop = ctx.getProperties().get(ACTIVE_BY_DEFAULT_PROP);
         defaultFilterActive = (prop instanceof Boolean ? (Boolean)prop : false);
+
+        prop = bundleContext.getProperty(FRAMEWORK_PROP_MANAGER_ROOT);
+        managerRoot = prop == null ? DEFAULT_MANAGER_ROOT : prop.toString();
+
         if(defaultFilterActive) {
             enable();
         }
@@ -171,8 +180,9 @@ public class StartupFilterImpl implement
     public synchronized void enable() {
         if(filterServiceRegistration == null) {
             final Hashtable<String, Object> params = new Hashtable<String, Object>();
+            params.put(Constants.SERVICE_RANKING, 0x9000); // run before RequestLoggerFilter (0x8000)
             params.put("filter.scope", "REQUEST");
-            params.put("filter.order", Integer.MIN_VALUE);
+            params.put("pattern", "^(?!"+ managerRoot +")(.+)");
             filterServiceRegistration = bundleContext.registerService(Filter.class.getName(), this, params);
             log.info("Registered {} as a Filter service", this);
         }

Modified: sling/trunk/contrib/extensions/startup-filter/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/startup-filter/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java?rev=1526891&r1=1526890&r2=1526891&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/startup-filter/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java (original)
+++ sling/trunk/contrib/extensions/startup-filter/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java Fri Sep 27 13:16:36 2013
@@ -170,7 +170,8 @@ public class StartupFilterImplTest {
             will(returnValue(providerRefs));
             allowing(bundleContext).getService(with(any(ServiceReference.class)));
             will(returnValue(provider));
-            
+            allowing(bundleContext).getProperty(with(any(String.class)));
+
             allowing(bundleContext).registerService(with(Filter.class.getName()), with(any(Object.class)), with(any(Dictionary.class)));
             will(new DoAllAction(
                     new ChangeInteger(activeFilterCount, true),



Re: svn commit: r1526891 - in /sling/trunk/contrib/extensions/startup-filter/src: main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java

Posted by Bertrand Delacretaz <bd...@apache.org>.
On Fri, Sep 27, 2013 at 3:25 PM, Felix Meschberger <fm...@adobe.com> wrote:
> ...I fear using the pattern property with a regex is not portable and does not work in the upcoming Http Service spec...

Ok, thanks for mentioning this, noted in SLING-3119 for now.

-Bertrand

Re: svn commit: r1526891 - in /sling/trunk/contrib/extensions/startup-filter/src: main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java

Posted by Felix Meschberger <fm...@adobe.com>.
Hi

Am 27.09.2013 um 15:16 schrieb <bd...@apache.org>:

> Author: bdelacretaz
> Date: Fri Sep 27 13:16:36 2013
> New Revision: 1526891
> 
> URL: http://svn.apache.org/r1526891
> Log:
> SLING-3119 - setup startup filter as a plain Filter instead of a Sling one. Contributed by Ben Peter, thanks!
> 
> +
> +    private final String FRAMEWORK_PROP_MANAGER_ROOT = "felix.webconsole.manager.root";
> +    static final String DEFAULT_MANAGER_ROOT = "/system/console";
> +    private String managerRoot;
> 

I would call this a generic exemption list of URL (prefixes) to ignore and not hook it to the web console

>             final Hashtable<String, Object> params = new Hashtable<String, Object>();
> +            params.put(Constants.SERVICE_RANKING, 0x9000); // run before RequestLoggerFilter (0x8000)
>             params.put("filter.scope", "REQUEST");
> -            params.put("filter.order", Integer.MIN_VALUE);
> +            params.put("pattern", "^(?!"+ managerRoot +")(.+)");

I fear using the pattern property with a regex is not portable and does not work in the upcoming Http Service spec which only supports Servlet API style patterns

Regards
Felix