This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-startupfilter.git
commit 9064c6d3a136eed512bec59e8180f9cbd1b577b4 Author: Bertrand Delacretaz <[email protected]> AuthorDate: Fri Sep 27 13:16:36 2013 +0000 SLING-3119 - setup startup filter as a plain Filter instead of a Sling one. Contributed by Ben Peter, thanks! git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1526891 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/sling/startupfilter/impl/StartupFilterImpl.java | 14 ++++++++++++-- .../sling/startupfilter/impl/StartupFilterImplTest.java | 3 ++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java b/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java index d1ed6dd..a56cfb2 100644 --- a/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java +++ b/src/main/java/org/apache/sling/startupfilter/impl/StartupFilterImpl.java @@ -43,6 +43,7 @@ import org.apache.sling.startupfilter.StartupFilter; 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 implements StartupFilter, Filter { @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 implements StartupFilter, Filter { 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 implements StartupFilter, Filter { 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); } diff --git a/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java b/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java index 329dae8..9fd25c2 100644 --- a/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java +++ b/src/test/java/org/apache/sling/startupfilter/impl/StartupFilterImplTest.java @@ -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), -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
