Author: ssmiweve Date: 2008-07-01 19:59:09 +0200 (Tue, 01 Jul 2008) New Revision: 6717
Modified: trunk/war/pom.xml trunk/war/src/main/java/no/sesat/search/http/filters/UrlRewriteFilter.java trunk/war/src/main/java/no/sesat/search/http/urlrewrite/UrlRewriterContainerFactory.java Log: Issue SKER3475: (Use tuckey's urlrewrite improvements relating to http://code.google.com/p/urlrewritefilter/issues/detail?id=4) Modified: trunk/war/pom.xml =================================================================== --- trunk/war/pom.xml 2008-07-01 10:12:26 UTC (rev 6716) +++ trunk/war/pom.xml 2008-07-01 17:59:09 UTC (rev 6717) @@ -225,10 +225,10 @@ </dependency> <dependency> - <groupId>urlrewrite</groupId> - <artifactId>urlrewrite</artifactId> + <groupId>org.tuckey</groupId> + <artifactId>urlrewritefilter</artifactId> <type>jar</type> - <version>3.0-schibstedsok-r1</version> + <version>3.1.0</version> </dependency> <!-- Reference implementation provided in no.sesat.search.http.dwr.DataModelWrapper.java Modified: trunk/war/src/main/java/no/sesat/search/http/filters/UrlRewriteFilter.java =================================================================== --- trunk/war/src/main/java/no/sesat/search/http/filters/UrlRewriteFilter.java 2008-07-01 10:12:26 UTC (rev 6716) +++ trunk/war/src/main/java/no/sesat/search/http/filters/UrlRewriteFilter.java 2008-07-01 17:59:09 UTC (rev 6717) @@ -1,4 +1,4 @@ -/* Copyright (2007) Schibsted Søk AS +/* Copyright (2007-2008) Schibsted Søk AS * This file is part of SESAT. * * SESAT is free software: you can redistribute it and/or modify @@ -22,7 +22,10 @@ package no.sesat.search.http.filters; +import javax.servlet.FilterChain; +import javax.servlet.ServletContext; import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.xml.parsers.DocumentBuilder; import no.sesat.search.http.urlrewrite.UrlRewriterContainerFactory; @@ -30,7 +33,7 @@ import no.sesat.search.site.SiteContext; import no.sesat.search.site.config.DocumentLoader; import no.sesat.search.site.config.UrlResourceLoader; -import org.tuckey.web.filters.urlrewrite.UrlRewriterContainer; +import org.tuckey.web.filters.urlrewrite.UrlRewriter; /** Override of tuckey's UrlRewriteFilter that supplies an inputstream to the skins's urlrewrite.xml * instead of the default /WEB-INF/urlrewrite.xml @@ -56,9 +59,12 @@ // Public -------------------------------------------------------- @Override - public UrlRewriterContainer getUrlRewriterContainer(final ServletRequest request){ + protected UrlRewriter getUrlRewriter( + final ServletRequest request, + final ServletResponse response, + final FilterChain chain){ - UrlRewriterContainer result = null; + UrlRewriter result = null; if(request instanceof HttpServletRequest){ final HttpServletRequest httpRequest = (HttpServletRequest)request; final Site site = (Site) httpRequest.getAttribute(Site.NAME_KEY); @@ -74,14 +80,13 @@ public Site getSite() { return site; } + public ServletContext getServletContext(){ + return httpRequest.getSession().getServletContext(); + } }); - result = factory.getUrlRewriterContainer(); + result = factory.getUrlRewriter(); - if(!result.isLoaded()){ - result.init(getFilterConfig()); - result.loadConf(); - } } return result; } Modified: trunk/war/src/main/java/no/sesat/search/http/urlrewrite/UrlRewriterContainerFactory.java =================================================================== --- trunk/war/src/main/java/no/sesat/search/http/urlrewrite/UrlRewriterContainerFactory.java 2008-07-01 10:12:26 UTC (rev 6716) +++ trunk/war/src/main/java/no/sesat/search/http/urlrewrite/UrlRewriterContainerFactory.java 2008-07-01 17:59:09 UTC (rev 6717) @@ -1,4 +1,4 @@ -/* Copyright (2006-2007) Schibsted Søk AS +/* Copyright (2006-2008) Schibsted Søk AS * This file is part of SESAT. * * SESAT is free software: you can redistribute it and/or modify @@ -13,7 +13,6 @@ * * You should have received a copy of the GNU Affero General Public License * along with SESAT. If not, see <http://www.gnu.org/licenses/>. - */ /* * UrlRewriterContainerFactory.java @@ -24,11 +23,11 @@ package no.sesat.search.http.urlrewrite; import java.io.ByteArrayInputStream; -import java.io.InputStream; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReentrantReadWriteLock; +import javax.servlet.ServletContext; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -40,14 +39,14 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import no.schibstedsok.commons.ioc.BaseContext; -import no.sesat.search.site.config.ResourceContext; import no.sesat.search.site.config.DocumentLoader; import no.sesat.search.site.Site; import no.sesat.search.site.SiteContext; import no.sesat.search.site.SiteKeyedFactory; import no.sesat.search.site.config.DocumentContext; import org.apache.log4j.Logger; -import org.tuckey.web.filters.urlrewrite.UrlRewriterContainer; +import org.tuckey.web.filters.urlrewrite.Conf; +import org.tuckey.web.filters.urlrewrite.UrlRewriter; import org.w3c.dom.Document; /** Provides a SiteKeyedFactory around urlrewrite.xml configurations instead of tuckey's default @@ -61,7 +60,9 @@ /** * The context any SearchTabFactory must work against. */ - public interface Context extends BaseContext, DocumentContext, SiteContext {} + public interface Context extends BaseContext, DocumentContext, SiteContext { + ServletContext getServletContext(); + } // Constants ----------------------------------------------------- @@ -83,7 +84,7 @@ // Attributes ---------------------------------------------------- - private final UrlRewriterContainer urlRewriterContainer; + private final UrlRewriter urlRewriter; private final DocumentLoader loader; private final Context context; @@ -121,6 +122,7 @@ try{ INSTANCES_LOCK.writeLock().lock(); + urlRewriter.destroy(); return null != INSTANCES.remove(site); }finally{ INSTANCES_LOCK.writeLock().unlock(); @@ -145,7 +147,7 @@ loader = context.newDocumentLoader(cxt, URLREWRITE_XMLFILE, builder); // start initialisation - urlRewriterContainer = initUrlRewriterContainer(); + urlRewriter = initUrlRewriter(); // update the store of factories INSTANCES.put(context.getSite(), this); @@ -161,11 +163,11 @@ /** * @return */ - public UrlRewriterContainer getUrlRewriterContainer(){ + public UrlRewriter getUrlRewriter(){ - LOG.trace("getUrlRewriterContainer()"); + LOG.trace("getUrlRewriter()"); - return urlRewriterContainer; + return urlRewriter; } // Package protected --------------------------------------------- @@ -175,7 +177,7 @@ // Private ------------------------------------------------------- - private UrlRewriterContainer initUrlRewriterContainer() { + private UrlRewriter initUrlRewriter() { loader.abut(); LOG.info("Parsing " + URLREWRITE_XMLFILE + " started"); @@ -184,7 +186,15 @@ // finished LOG.info("Parsing " + URLREWRITE_XMLFILE + " finished"); - return new URC(0 < output.trim().length() ? output : EMPTY_RULES); + byte[] byteArr = 0 < output.trim().length() + ? output.getBytes() + : EMPTY_RULES.getBytes(); + + return new UrlRewriter(new Conf( + context.getServletContext(), + new ByteArrayInputStream(byteArr), + URLREWRITE_XMLFILE, + "")); } private static StringWriter transformDocumentToString(final Document xml){ @@ -206,18 +216,4 @@ // Inner classes ------------------------------------------------- - private static class URC extends UrlRewriterContainer{ - - private final String rules; - - URC(final String rules){ - super(); - this.rules = rules; - } - - protected InputStream getInputStream(){ - return new ByteArrayInputStream(rules.getBytes()); - } - } - } \ No newline at end of file _______________________________________________ Kernel-commits mailing list [email protected] http://sesat.no/mailman/listinfo/kernel-commits
