Author: sshafroi
Date: 2008-04-23 15:33:04 +0200 (Wed, 23 Apr 2008)
New Revision: 6543

Modified:
   trunk/
   
trunk/core-api/src/main/java/no/sesat/search/view/output/SyndicationGenerator.java
   trunk/generic.sesam/sesam.com/
   trunk/generic.sesam/sesam.com/pom.xml
   trunk/generic.sesam/sesam.com/war/src/main/conf/views.xml
   trunk/generic.sesam/sesam.com/war/src/main/images/logo.png
   
trunk/generic.sesam/sesam.com/war/src/main/webapp/WEB-INF/classes/fragments/layout/sesam.com/head.jsp
   
trunk/query-api/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
   
trunk/site-spi/src/test/java/no/sesat/search/site/config/FileResourceLoader.java
   trunk/skin-archetype/src/main/resources/archetype-resources/pom.xml
   
trunk/view-config-spi/src/main/java/no/sesat/search/view/navigation/OptionsNavigationConfig.java
   
trunk/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
   trunk/war/pom.xml
   
trunk/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
   trunk/war/src/main/java/no/sesat/search/http/servlet/SearchServlet.java
Log:
Merged revisions 6502-6541 via svnmerge from 
http://sesat.no/svn/sesat-kernel/branches/2.17

........
  r6503 | ssmiweve | 2008-04-19 21:36:14 +0200 (Sat, 19 Apr 2008) | 1 line
  
  SEARCH-4616 - sesat tests broken on windows machines
........
  r6504 | ssenrogn | 2008-04-20 23:20:20 +0200 (Sun, 20 Apr 2008) | 1 line
  
  Added Eclipse files to ignore list.
........
  r6505 | ssmiweve | 2008-04-21 08:44:14 +0200 (Mon, 21 Apr 2008) | 1 line
  
  SEARCH-4648 - Move sesam.no code out of SyndicationGenerator
........
  r6509 | ssmiweve | 2008-04-21 13:33:22 +0200 (Mon, 21 Apr 2008) | 1 line
  
  SEARCH-4581 - Geo-ord med bindestrek har sluttet ?\195?\165 splitte korrekt
........
  r6515 | ssmiweve | 2008-04-21 13:53:51 +0200 (Mon, 21 Apr 2008) | 2 lines
  
  fix to avod NPE (when a skin doesn't set any md5. properties)
   + javadoc
........
  r6516 | ssmiweve | 2008-04-21 14:27:20 +0200 (Mon, 21 Apr 2008) | 2 lines
  
  base default tab got display-css="false" added.
........
  r6518 | ssmiweve | 2008-04-21 14:48:55 +0200 (Mon, 21 Apr 2008) | 1 line
  
  we use ports now against generic.sesam
........
  r6523 | ssmiweve | 2008-04-21 15:01:30 +0200 (Mon, 21 Apr 2008) | 1 line
  
  following r6518
........
  r6532 | ssmiweve | 2008-04-22 10:18:30 +0200 (Tue, 22 Apr 2008) | 2 lines
  
  odd property left out in the cold.
........
  r6536 | ssmiweve | 2008-04-22 12:16:38 +0200 (Tue, 22 Apr 2008) | 1 line
  
  erroneous log line every request.
........
  r6537 | ssmiweve | 2008-04-22 20:07:54 +0200 (Tue, 22 Apr 2008) | 2 lines
  
  SEARCH-4105 - Move logic from get-method to constructor in NavigationManager
........
  r6538 | ssmiweve | 2008-04-22 22:23:38 +0200 (Tue, 22 Apr 2008) | 1 line
  
  SEARCH-4661 - NullPointerException: <init>(SyndicationGenerator.java:133)
........
  r6541 | ssmiweve | 2008-04-23 11:59:27 +0200 (Wed, 23 Apr 2008) | 2 lines
  
  logo back to company
........



Property changes on: trunk
___________________________________________________________________
Name: svnmerge-integrated
   - /branches/2.10:1-4690,4692-4745 /branches/2.11:1-4933 
/branches/2.12:1-5051,5053-5106 /branches/2.13:1-5378 /branches/2.14:1-5508 
/branches/2.15:1-5995 /branches/2.16:1-6499 /branches/2.17:1-6501 
/branches/2.6:1-3877 /branches/2.7:1-4160 /branches/2.8:1-4446 
/branches/2.9:1-4626 /branches/MAP_SEARCHv2:1-4544

   + /branches/2.10:1-4690,4692-4745 /branches/2.11:1-4933 
/branches/2.12:1-5051,5053-5106 /branches/2.13:1-5378 /branches/2.14:1-5508 
/branches/2.15:1-5995 /branches/2.16:1-6499 /branches/2.17:1-6541 
/branches/2.6:1-3877 /branches/2.7:1-4160 /branches/2.8:1-4446 
/branches/2.9:1-4626 /branches/MAP_SEARCHv2:1-4544

Modified: 
trunk/core-api/src/main/java/no/sesat/search/view/output/SyndicationGenerator.java
===================================================================
--- 
trunk/core-api/src/main/java/no/sesat/search/view/output/SyndicationGenerator.java
  2008-04-23 12:52:13 UTC (rev 6542)
+++ 
trunk/core-api/src/main/java/no/sesat/search/view/output/SyndicationGenerator.java
  2008-04-23 13:33:04 UTC (rev 6543)
@@ -63,6 +63,8 @@
 import java.util.List;
 import java.util.Properties;
 import java.util.TimeZone;
+import javax.resource.NotSupportedException;
+import no.sesat.search.result.BasicResultList;
 
 /**
  * Used by the rssDecorator.jsp to print out the results in rss format.
@@ -125,17 +127,21 @@
      * Creates a new instance.
      *
      * @param context The context this class needs to do its work.
+     * @throws SyndicationNotSupportedException 
      */
-    public SyndicationGenerator(final Context context) {
+    public SyndicationGenerator(final Context context) throws 
SyndicationNotSupportedException{
+        
+        if(null == context.getTab().getRssResultName()){ throw new 
SyndicationNotSupportedException(); }
 
         this.context = context;
 
-        this.result = 
context.getDataModel().getSearch(context.getTab().getRssResultName()).getResults();
+        this.result = null != 
context.getDataModel().getSearch(context.getTab().getRssResultName())
+                ? 
context.getDataModel().getSearch(context.getTab().getRssResultName()).getResults()
+                : new BasicResultList<ResultItem>();
+        
         this.site = context.getSite();
 
         this.text = TextMessages.valueOf(getTextMessagesContext());
-        //this.channels = Channels.instanceOf(getChannelContext());
-
         this.uri = context.getURL();
 
         final String type = getParameter("feedType");
@@ -324,31 +330,6 @@
             final String origUri = uri.replaceAll("&?output=[^&]+", 
"").replaceAll("&?feedtype=[^&]+", "");
             cxt.put("uri", origUri);
 
-            //cxt.put("channels", channels);
-
-            // @todo. Specific to sesam.no. Move somewhere else. result-spi? 
templates? The command?
-            if ("c".equals(context.getTab().getKey())) {
-
-                final String contentSource = getParameter("contentsource");
-                final String newsCountry = getParameter("newsCountry");
-
-                if (contentSource != null && 
contentSource.startsWith("Interna")) {
-                    cxt.put("newstype", "- Internasjonale nyheter");
-                } else if (contentSource != null && 
contentSource.equals("Mediearkivet")) {
-                    cxt.put("newstype", "- Papiraviser");
-                } else if (newsCountry != null && 
newsCountry.equals("Sverige")) {
-                    cxt.put("newstype", "- Svenske nyheter");
-                } else if (newsCountry != null && 
newsCountry.equals("Island")) {
-                    cxt.put("newstype", "- Islandske nyheter");
-                } else if (newsCountry != null && 
newsCountry.equals("Finland")) {
-                    cxt.put("newstype", "- Finske nyheter");
-                } else if (newsCountry != null && 
newsCountry.equals("Danmark")) {
-                    cxt.put("newstype", "- Danske nyheter");
-                } else {
-                    cxt.put("newstype", "- Norske nyheter");
-                }
-            }
-
             final Template tpl = VelocityEngineFactory.getTemplate(engine, 
site, templateUri);
 
             final StringWriter writer = new StringWriter();
@@ -412,4 +393,8 @@
 //    }
     
     // Inner classes -------------------------------------------------
+    
+    public static final class SyndicationNotSupportedException extends 
Exception{
+        
+    }
 }


Property changes on: trunk/generic.sesam/sesam.com
___________________________________________________________________
Name: svn:ignore
   - target

   + .project
.classpath
.settings
.checkstyle
target


Modified: trunk/generic.sesam/sesam.com/pom.xml
===================================================================
--- trunk/generic.sesam/sesam.com/pom.xml       2008-04-23 12:52:13 UTC (rev 
6542)
+++ trunk/generic.sesam/sesam.com/pom.xml       2008-04-23 13:33:04 UTC (rev 
6543)
@@ -162,7 +162,7 @@
             <properties>
                 <sesam.site>alpha.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.alpha.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.alpha.test.sesam:8084</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -173,7 +173,7 @@
             <properties>
                 <sesam.site>nuclei.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.nuclei.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.nuclei.test.sesam:8082</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -184,7 +184,7 @@
             <properties>
                 <sesam.site>beta.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.beta.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.beta.test.sesam:8085</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -195,7 +195,7 @@
             <properties>
                 <sesam.site>electron.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.electron.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.electron.test.sesam:8083</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -206,7 +206,7 @@
             <properties>
                 <sesam.site>gamma.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.gamma.test.sesam.no</sesam.site.parent>
+                <sesam.site.parent>generic.sesam:8086</sesam.site.parent>
             </properties>
         </profile>
 
@@ -219,7 +219,7 @@
             <properties>
                 <sesam.site>sesam.com</sesam.site>
                 <!-- The parent Site -->
-                <sesam.site.parent>generic.sesam.no</sesam.site.parent>
+                <sesam.site.parent>generic.sesam:8080</sesam.site.parent>
             </properties>
         </profile>
     </profiles>

Modified: trunk/generic.sesam/sesam.com/war/src/main/conf/views.xml
===================================================================
--- trunk/generic.sesam/sesam.com/war/src/main/conf/views.xml   2008-04-23 
12:52:13 UTC (rev 6542)
+++ trunk/generic.sesam/sesam.com/war/src/main/conf/views.xml   2008-04-23 
13:33:04 UTC (rev 6543)
@@ -23,7 +23,11 @@
         Purpose of the document follows.
 -->
 <views>
+    <!-- Override default to show its css -->
+    <tab id="default" display-css="true" inherit="default"/>
+    <!-- Our base sesam.com view -->
     <tab id="default-sesam-com" inherit="default"/>
+    <!-- The one vertical we have. -->
     <tab id="international" inherit="default-sesam-com"
             key="g" 
             mode="international" 

Modified: trunk/generic.sesam/sesam.com/war/src/main/images/logo.png
===================================================================
(Binary files differ)

Modified: 
trunk/generic.sesam/sesam.com/war/src/main/webapp/WEB-INF/classes/fragments/layout/sesam.com/head.jsp
===================================================================
--- 
trunk/generic.sesam/sesam.com/war/src/main/webapp/WEB-INF/classes/fragments/layout/sesam.com/head.jsp
       2008-04-23 12:52:13 UTC (rev 6542)
+++ 
trunk/generic.sesam/sesam.com/war/src/main/webapp/WEB-INF/classes/fragments/layout/sesam.com/head.jsp
       2008-04-23 13:33:04 UTC (rev 6543)
@@ -33,13 +33,17 @@
 <!-- Css -->
 <c:forEach var="ww" items="${tab.css}">
     <c:set var="ww_link"><search:findResource 
url="/css/tab/${ww.id}.css"/></c:set>
-    <link rel="stylesheet" type="text/css" href="${ww_link}" media="screen"/>
+    <c:if test="${not empty ww_link}">
+        <link rel="stylesheet" type="text/css" href="${ww_link}" 
media="screen"/>
+    </c:if>
 </c:forEach>
 <c:forEach var="w" items="${tab.ancestry}">
     <c:set var="w_link"><search:findResource 
url="/css/tab/${w.id}.css"/></c:set>
-    <link rel="stylesheet" type="text/css" href="${w_link}" media="screen"/>
+    <c:if test="${not empty w_link}">
+        <link rel="stylesheet" type="text/css" href="${w_link}" 
media="screen"/>
+    </c:if>
 </c:forEach>
-<c:set var="w_link"><search:findResource url="/css/print-style.css"/></c:set>
+<c:set var="w_link"><search:findResource url="/css/print.css"/></c:set>
 <link rel="stylesheet" type="text/css" href="${w_link}" media="print"/>
 
 <!-- Page Icons -->
@@ -55,7 +59,9 @@
 
 <c:forEach var="js" items="${tab.javascript}">
     <c:set var="js_link"><search:findResource 
url="/javascript/${js}.js"/></c:set>
-    <script type='text/javascript' src="${js_link}"></script>
+    <c:if test="${not empty js_link}">
+        <script type='text/javascript' src="${js_link}"></script>
+    </c:if>
 </c:forEach>
 
 </jsp:root>

Modified: 
trunk/query-api/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
===================================================================
--- 
trunk/query-api/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
       2008-04-23 12:52:13 UTC (rev 6542)
+++ 
trunk/query-api/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
       2008-04-23 13:33:04 UTC (rev 6543)
@@ -527,7 +527,7 @@
 
         return string
                 .replaceAll(" ", "xxKEEPWSxx") // Hack to keep spaces.
-                .replaceAll(SKIP_REGEX, "")
+                .replaceAll(SKIP_REGEX, " ")
                 .replaceAll("xxKEEPWSxx", " ") // Hack to keep spaces.
                 .replaceAll(OPERATOR_REGEX, " ");
     }

Modified: 
trunk/site-spi/src/test/java/no/sesat/search/site/config/FileResourceLoader.java
===================================================================
--- 
trunk/site-spi/src/test/java/no/sesat/search/site/config/FileResourceLoader.java
    2008-04-23 12:52:13 UTC (rev 6542)
+++ 
trunk/site-spi/src/test/java/no/sesat/search/site/config/FileResourceLoader.java
    2008-04-23 13:33:04 UTC (rev 6543)
@@ -111,7 +111,7 @@
 
      protected final String getProjectName(final String siteName){
 
-        // XXX Very hacky and awful! desparately needs attention.
+        // XXX Very hacky and awful! desparately needs attention. One idea is 
to always use "generic.sesam" as skin name
         String projectName = siteName
                 
.replaceAll("(localhost|(alpha|nuclei|beta|electron|gamma).test.sesam)", 
"sesam")
                 .replaceAll("generic.(sesam.no)", "generic.sesam");
@@ -154,12 +154,21 @@
             String basedir = System.getProperty("basedir") + 
File.separatorChar;
             LOG.debug("project " + project);
             while(true){
-                final String basedirNormalised = new 
File(basedir).toURI().normalize().toString()
-                        .replaceFirst("file:", "").replace('/', 
File.separatorChar);
+                String basedirNormalised = new 
File(basedir).toURI().normalize().toString()
+                        .replaceFirst("file:", "")
+                        .replace('/', File.separatorChar);
                 
+                if(!basedirNormalised.endsWith(File.separator)){
+                    basedirNormalised =  basedirNormalised + 
File.separatorChar;
+                }
+                
                 LOG.debug("basedirNormalised " + basedirNormalised);
                 
-                assert ! (File.separatorChar + 
"war").equals(basedirNormalised) : "At root of filesystem!";
+                if((File.separatorChar + "war" + 
File.separatorChar).equals(basedirNormalised)){
+                    throw new IllegalStateException("At root of filesystem!" +
+                            "+ Current requirement of tests is that 
sesat-kernel is checked out, and named such," +
+                            " in any parent folder from here. I've searched 
all the way to the root of the filesystem");
+                }
                 
                 if(basedirNormalised.endsWith(project) 
                         || basedirNormalised.endsWith(project + "war" + 
File.separatorChar)){

Modified: trunk/skin-archetype/src/main/resources/archetype-resources/pom.xml
===================================================================
--- trunk/skin-archetype/src/main/resources/archetype-resources/pom.xml 
2008-04-23 12:52:13 UTC (rev 6542)
+++ trunk/skin-archetype/src/main/resources/archetype-resources/pom.xml 
2008-04-23 13:33:04 UTC (rev 6543)
@@ -167,7 +167,7 @@
             <properties>
                 <sesam.site>alpha.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.alpha.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.alpha.test.sesam:8084</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -177,7 +177,7 @@
             <properties>
                 <sesam.site>nuclei.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.nuclei.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.nuclei.test.sesam:8082</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -187,7 +187,7 @@
             <properties>
                 <sesam.site>beta.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.beta.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.beta.test.sesam:8085</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -197,7 +197,7 @@
             <properties>
                 <sesam.site>electron.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.electron.test.sesam.no</sesam.site.parent>
+                
<sesam.site.parent>generic.electron.test.sesam:8083</sesam.site.parent>
             </properties>
         </profile>
         <profile>
@@ -207,7 +207,7 @@
             <properties>
                 <sesam.site>gamma.test.sesam.com</sesam.site>
                 <!-- The parent Site -->
-                
<sesam.site.parent>generic.gamma.test.sesam.no</sesam.site.parent>
+                <sesam.site.parent>generic.sesam:8086</sesam.site.parent>
             </properties>
         </profile>
 
@@ -219,7 +219,7 @@
             <properties>
                 <sesam.site>sesam.com</sesam.site>
                 <!-- The parent Site -->
-                <sesam.site.parent>generic.sesam.no</sesam.site.parent>
+                <sesam.site.parent>generic.sesam:8080</sesam.site.parent>
             </properties>
         </profile>
     </profiles>

Modified: 
trunk/view-config-spi/src/main/java/no/sesat/search/view/navigation/OptionsNavigationConfig.java
===================================================================
--- 
trunk/view-config-spi/src/main/java/no/sesat/search/view/navigation/OptionsNavigationConfig.java
    2008-04-23 12:52:13 UTC (rev 6542)
+++ 
trunk/view-config-spi/src/main/java/no/sesat/search/view/navigation/OptionsNavigationConfig.java
    2008-04-23 13:33:04 UTC (rev 6543)
@@ -34,6 +34,9 @@
 import java.util.Collections;
 import java.util.Collection;
 import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import no.sesat.search.view.config.SearchTab;
 
 /**
  *
@@ -117,6 +120,8 @@
         private String tab;
         private boolean useHitCount;
         private String commandName;
+        // just like NavigationConfig.Navigation.Nav we'll handle tab via 
staticParameters
+        private Map<String,String> staticParameters = new 
HashMap<String,String>();
 
         public Option(final Element e) {
             fillBeanProperty(this, null, "value", ParseType.String, e, null);
@@ -149,7 +154,7 @@
             return valueRef;
         }
 
-        public void setValueRef(String valueRef) {
+        public void setValueRef(final String valueRef) {
             this.valueRef = valueRef;
         }
 
@@ -157,7 +162,7 @@
             return defaultSelect;
         }
 
-        public void setDefaultSelect(boolean defaultSelect) {
+        public void setDefaultSelect(final boolean defaultSelect) {
             this.defaultSelect = defaultSelect;
         }
 
@@ -165,7 +170,7 @@
             return defaultSelectValueRef;
         }
 
-        public void setDefaultSelectValueRef(String defaultSelectValueRef) {
+        public void setDefaultSelectValueRef(final String 
defaultSelectValueRef) {
             this.defaultSelectValueRef = defaultSelectValueRef;
         }
 
@@ -173,15 +178,17 @@
             return tab;
         }
 
-        public void setTab(String tab) {
+        public void setTab(final String tab) {
             this.tab = tab;
+            // The tab property takes preference over any url parameters. 
intialse it here and use against urlGenerator.
+            staticParameters.put(SearchTab.PARAMETER_KEY, tab);
         }
 
         public boolean isUseHitCount() {
             return useHitCount;
         }
 
-        public void setUseHitCount(boolean useHitCount) {
+        public void setUseHitCount(final boolean useHitCount) {
             this.useHitCount = useHitCount;
         }
 
@@ -189,10 +196,14 @@
             return commandName;
         }
 
-        public void setCommandName(String commandName) {
+        public void setCommandName(final String commandName) {
             this.commandName = commandName;
         }
 
+        public Map<String, String> getStaticParameters() {
+            return Collections.unmodifiableMap(staticParameters);
+        }
+        
         @Override
         public String toString() {
             return "\nOption{" +

Modified: 
trunk/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
===================================================================
--- 
trunk/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
        2008-04-23 12:52:13 UTC (rev 6542)
+++ 
trunk/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
        2008-04-23 13:33:04 UTC (rev 6543)
@@ -145,18 +145,9 @@
             }
             if (value != null) {
 
-                final Map<String,String> urlParameters;
-
-                if (option.getTab() != null) {
-                    urlParameters = new HashMap<String, String>(1);
-                    urlParameters.put(SearchTab.PARAMETER_KEY, 
option.getTab());
-                } else {
-                    urlParameters = Collections.<String, String> emptyMap();
-                }
-
                 final NavigationItem navigator = new BasicNavigationItem(
                         option.getDisplayName(),
-                        context.getUrlGenerator().getURL(value, 
config.getParent(), urlParameters),
+                        context.getUrlGenerator().getURL(value, 
config.getParent(), option.getStaticParameters()),
                         -1);
 
                 parentResult.addResult(navigator);

Modified: trunk/war/pom.xml
===================================================================
--- trunk/war/pom.xml   2008-04-23 12:52:13 UTC (rev 6542)
+++ trunk/war/pom.xml   2008-04-23 13:33:04 UTC (rev 6543)
@@ -335,8 +335,6 @@
             <id>production</id>
             <activation />
             <properties>
-                <sesam.site.default>generic.sesam.no</sesam.site.default>
-                <server.port>80</server.port>
                 <tradedoubler.form.action>$$url</tradedoubler.form.action>
                 
<tradedoubler.context.url>http://www.sesam.no</tradedoubler.context.url>
                 
<msearch.configuration.url>http://www.sesam.no/mobil.sesam.no/conf/msearch-client.properties</msearch.configuration.url>

Modified: 
trunk/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
===================================================================
--- 
trunk/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
      2008-04-23 12:52:13 UTC (rev 6542)
+++ 
trunk/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
      2008-04-23 13:33:04 UTC (rev 6543)
@@ -35,72 +35,73 @@
 import javax.servlet.ServletResponse;
 import org.apache.log4j.Logger;
 
-/**
- * @author <a href="mailto:[EMAIL PROTECTED]">Magnus Eklund</a>
- * @version <tt>$Revision$</tt>
+/** Generalised way to protect parameter values through md5 signings.
+ * A skin must define the properties (in configuration.properties):
+ * md5.secret and md5.protectedParameters
+ * Any secret can be chosen. Any parameter matches those listed in 
md5.protectedParameters (separated by commas)
+ * are expected to have a paired parameter (called &lt;parameterName&gt;_x) 
that represents the signing of the
+ * original parameter value. If this second parameter does not exist or it's 
not an accurate signing of the original
+ * parameter then the request immediately returns with a 404 response error.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Magnus Eklund</a>
+ * @version <tt>$Id$</tt>
  */
 public final class MD5ProtectedParametersFilter implements Filter {
 
     private static final Logger LOG = 
Logger.getLogger(MD5ProtectedParametersFilter.class);
 
-    /** [EMAIL PROTECTED] **/
     public void init(final FilterConfig filterConfig) throws ServletException {
     }
 
-    /** [EMAIL PROTECTED] **/
     public void doFilter(
             final ServletRequest servletRequest,
             final ServletResponse servletResponse,
             final FilterChain filterChain) throws IOException, 
ServletException {
 
         final Enumeration e = servletRequest.getParameterNames();
-            
+
         if(servletRequest instanceof HttpServletRequest) {
-               HttpServletRequest httpServletRequest = (HttpServletRequest) 
servletRequest;
-               
-               DataModel datamodel = 
(DataModel)httpServletRequest.getSession().getAttribute(DataModel.KEY);
-               SiteConfiguration siteConfig = 
datamodel.getSite().getSiteConfiguration();
-               
-               MD5Generator digestGenerator = new 
MD5Generator(siteConfig.getProperty("md5.secret"));
-                               
-               Map<String, Boolean> protectedParameters = new HashMap<String, 
Boolean>();
-               final String[] p = 
siteConfig.getProperty("md5.protectedParameters").split(",");
-            for (final String parameter : p) {
-                LOG.info("Adding " + parameter + " as protected parameter");
-                protectedParameters.put(parameter, Boolean.TRUE);
+            final HttpServletRequest httpServletRequest = (HttpServletRequest) 
servletRequest;
+
+            final DataModel datamodel = 
(DataModel)httpServletRequest.getSession().getAttribute(DataModel.KEY);
+            final SiteConfiguration siteConf = 
datamodel.getSite().getSiteConfiguration();
+
+            if(null != siteConf.getProperty("md5.secret") && null != 
siteConf.getProperty("md5.protectedParameters")){
+
+                final MD5Generator generator = new 
MD5Generator(siteConf.getProperty("md5.secret"));
+
+                final Map<String, Boolean> protectedParameters = new 
HashMap<String, Boolean>();
+                final String[] p = 
siteConf.getProperty("md5.protectedParameters").split(",");
+                for (final String parameter : p) {
+                    LOG.info("Adding " + parameter + " as protected 
parameter");
+                    protectedParameters.put(parameter, Boolean.TRUE);
+                }
+
+                while (e.hasMoreElements()) {
+                    final String paramName = (String) e.nextElement();
+
+                    LOG.trace("Checking to see if " + paramName + " is 
protected");
+
+                    if (protectedParameters.containsKey(paramName)) {
+
+                        LOG.trace(paramName + " is protected");
+
+                        final String md5Param = 
servletRequest.getParameter(paramName + "_x");
+
+                        if (md5Param == null || 
!generator.validate(servletRequest.getParameter(paramName), md5Param)){
+                            final HttpServletResponse response = 
(HttpServletResponse) servletResponse;
+                            
response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                            return;
+                        }
+                    }
+                }
+
+                servletRequest.setAttribute("hashGenerator", generator);
             }
-        
-               while (e.hasMoreElements()) {
-                   final String parameterName = (String) e.nextElement();
-       
-                   if (LOG.isTraceEnabled()) {
-                       LOG.trace("Checking to see if " + parameterName + " is 
protected");
-                   }
-       
-                   if (protectedParameters.containsKey(parameterName)) {
-       
-                       if (LOG.isTraceEnabled()) {
-                           LOG.trace(parameterName + " is protected");
-                       }
-       
-                       final String md5Parameter = 
servletRequest.getParameter(parameterName + "_x");
-       
-                       if (md5Parameter == null
-                               || 
!digestGenerator.validate(servletRequest.getParameter(parameterName), 
md5Parameter))
-                       {
-                           final HttpServletResponse response = 
(HttpServletResponse) servletResponse;
-                           
response.sendError(HttpServletResponse.SC_NOT_FOUND);
-                           return;
-                       }
-                   }
-               }
-       
-               servletRequest.setAttribute("hashGenerator", digestGenerator);
         }
         filterChain.doFilter(servletRequest, servletResponse);
     }
 
-    /** [EMAIL PROTECTED] **/
     public void destroy() {
     }
 

Modified: 
trunk/war/src/main/java/no/sesat/search/http/servlet/SearchServlet.java
===================================================================
--- trunk/war/src/main/java/no/sesat/search/http/servlet/SearchServlet.java     
2008-04-23 12:52:13 UTC (rev 6542)
+++ trunk/war/src/main/java/no/sesat/search/http/servlet/SearchServlet.java     
2008-04-23 13:33:04 UTC (rev 6543)
@@ -282,15 +282,18 @@
 
         for (String s : ipaddress) { allowed |= ipAddr.startsWith(s); }
 
-        if(!allowed){ LOG.warn("ipaddress " + ipAddr + "trying to 
performFactoryReload(..)"); }
+        if (null != reload && reload.length() > 0){
+            
+            if (allowed){
+                try{
+                    final ReloadArg arg = 
ReloadArg.valueOf(reload.toUpperCase());
+                    FactoryReloads.performReloads(genericCxt, arg);
 
-        if (allowed && null != reload && reload.length() > 0){
-            try{
-                final ReloadArg arg = ReloadArg.valueOf(reload.toUpperCase());
-                FactoryReloads.performReloads(genericCxt, arg);
-
-            }catch(IllegalArgumentException ex){
-                LOG.info("Invalid reload parameter -->" + reload);
+                }catch(IllegalArgumentException ex){
+                    LOG.info("Invalid reload parameter -->" + reload);
+                }
+            }else{
+                LOG.warn("ipaddress " + ipAddr + " not allowed to 
performFactoryReload(..)");
             }
         }
     }

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to