Author: cziegeler Date: Thu Sep 22 13:45:41 2016 New Revision: 1761969 URL: http://svn.apache.org/viewvc?rev=1761969&view=rev Log: SLING-6007 : XSSFilterImpl should move to new ResourceChangeListener API . Apply slightly modified patch from abdul hameed pathan
Modified: sling/trunk/bundles/extensions/xss/pom.xml sling/trunk/bundles/extensions/xss/src/main/java/org/apache/sling/xss/impl/XSSFilterImpl.java Modified: sling/trunk/bundles/extensions/xss/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/xss/pom.xml?rev=1761969&r1=1761968&r2=1761969&view=diff ============================================================================== --- sling/trunk/bundles/extensions/xss/pom.xml (original) +++ sling/trunk/bundles/extensions/xss/pom.xml Thu Sep 22 13:45:41 2016 @@ -23,7 +23,7 @@ <parent> <groupId>org.apache.sling</groupId> <artifactId>sling</artifactId> - <version>26</version> + <version>28</version> <relativePath /> </parent> @@ -236,17 +236,13 @@ <dependency> <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> + <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> + <artifactId>osgi.core</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> @@ -255,7 +251,7 @@ <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.api</artifactId> - <version>2.2.0</version> + <version>2.11.0</version> <scope>provided</scope> </dependency> <dependency> @@ -277,14 +273,13 @@ <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> - <version>1.8.4</version> - <type>jar</type> + <version>1.10.19</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> - <version>1.5.5</version> + <version>1.6.5</version> <scope>test</scope> </dependency> <dependency> Modified: sling/trunk/bundles/extensions/xss/src/main/java/org/apache/sling/xss/impl/XSSFilterImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/xss/src/main/java/org/apache/sling/xss/impl/XSSFilterImpl.java?rev=1761969&r1=1761968&r2=1761969&view=diff ============================================================================== --- sling/trunk/bundles/extensions/xss/src/main/java/org/apache/sling/xss/impl/XSSFilterImpl.java (original) +++ sling/trunk/bundles/extensions/xss/src/main/java/org/apache/sling/xss/impl/XSSFilterImpl.java Thu Sep 22 13:45:41 2016 @@ -19,25 +19,26 @@ package org.apache.sling.xss.impl; import java.io.InputStream; import java.util.Arrays; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Pattern; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Properties; import org.apache.felix.scr.annotations.Property; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.Service; -import org.apache.sling.api.SlingConstants; import org.apache.sling.api.resource.LoginException; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceResolverFactory; +import org.apache.sling.api.resource.observation.ExternalResourceChangeListener; +import org.apache.sling.api.resource.observation.ResourceChange; +import org.apache.sling.api.resource.observation.ResourceChangeListener; import org.apache.sling.xss.ProtectionContext; import org.apache.sling.xss.XSSFilter; -import org.osgi.service.event.Event; -import org.osgi.service.event.EventConstants; -import org.osgi.service.event.EventHandler; import org.owasp.validator.html.model.Attribute; import org.owasp.validator.html.model.Tag; import org.slf4j.Logger; @@ -48,9 +49,12 @@ import org.slf4j.LoggerFactory; * <a href="http://code.google.com/p/owaspantisamy/">http://code.google.com/p/owaspantisamy/</a>. */ @Component(immediate = true) -@Service(value = {EventHandler.class, XSSFilter.class}) -@Property(name = EventConstants.EVENT_TOPIC, value = {"org/apache/sling/api/resource/Resource/*"}) -public class XSSFilterImpl implements XSSFilter, EventHandler { +@Service(value = {ResourceChangeListener.class, XSSFilter.class}) +@Properties({ + @Property(name = ResourceChangeListener.CHANGES, value = {"ADDED","CHANGED", "REMOVED"}), + @Property(name = ResourceChangeListener.PATHS, value = {"glob:/**/sling/xss/config.xml", "glob:/sling/xss/config.xml"}) +}) +public class XSSFilterImpl implements XSSFilter, ResourceChangeListener, ExternalResourceChangeListener { private static final Logger LOGGER = LoggerFactory.getLogger(XSSFilterImpl.class); @@ -81,13 +85,13 @@ public class XSSFilterImpl implements XS private ResourceResolverFactory resourceResolverFactory = null; @Override - public void handleEvent(final Event event) { - final String path = (String) event.getProperty(SlingConstants.PROPERTY_PATH); - if (path.endsWith("/" + DEFAULT_POLICY_PATH)) { - LOGGER.debug("Detected policy file change at {}. Updating default handler.", path); - updateDefaultHandler(); - } - } + public void onChange(List<ResourceChange> resourceChanges) { + for(ResourceChange change : resourceChanges){ + LOGGER.debug("Detected policy file change at {}. Updating default handler.", change.getPath()); + updateDefaultHandler(); + } + + } @Override public boolean check(final ProtectionContext context, final String src) { @@ -249,5 +253,4 @@ public class XSSFilterImpl implements XS } return isValid; } - }