You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by eh...@apache.org on 2007/04/09 04:29:26 UTC

svn commit: r526634 - in /lucene/solr/trunk: example/solr/conf/ src/java/org/apache/solr/core/ src/java/org/apache/solr/request/ src/java/org/apache/solr/util/ src/test/org/apache/solr/ src/test/test-files/solr/

Author: ehatcher
Date: Sun Apr  8 19:29:24 2007
New Revision: 526634

URL: http://svn.apache.org/viewvc?view=rev&rev=526634
Log:
SOLR-184: add echoHandler=true to responseHeader, support echoParams=all (contributed by Ryan McKinley)

Additionally I added some unit tests to prove the new features added.


Modified:
    lucene/solr/trunk/example/solr/conf/solrconfig.xml
    lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
    lucene/solr/trunk/src/java/org/apache/solr/request/SolrParams.java
    lucene/solr/trunk/src/java/org/apache/solr/util/TestHarness.java
    lucene/solr/trunk/src/test/org/apache/solr/EchoParamsTest.java
    lucene/solr/trunk/src/test/test-files/solr/crazy-path-to-config.xml

Modified: lucene/solr/trunk/example/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/example/solr/conf/solrconfig.xml?view=diff&rev=526634&r1=526633&r2=526634
==============================================================================
--- lucene/solr/trunk/example/solr/conf/solrconfig.xml (original)
+++ lucene/solr/trunk/example/solr/conf/solrconfig.xml Sun Apr  8 19:29:24 2007
@@ -379,7 +379,12 @@
     -->
   </requestHandler>
 
-  <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" />
+  <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
+    <lst name="defaults">
+     <str name="echoParams">explicit</str> <!-- for all params (including the default etc) 'all' -->
+     <str name="echoHandler">true</str>
+    </lst>
+  </requestHandler>
   
   <!-- NOTE, /update is mapped to a servlet, we can have the filter handle requests off that! -->
   <requestHandler name="/update/commit" class="solr.CommitRequestHandler" />

Modified: lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java?view=diff&rev=526634&r1=526633&r2=526634
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java Sun Apr  8 19:29:24 2007
@@ -39,10 +39,12 @@
 import org.apache.solr.request.PythonResponseWriter;
 import org.apache.solr.request.QueryResponseWriter;
 import org.apache.solr.request.RubyResponseWriter;
+import org.apache.solr.request.SolrParams;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryResponse;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.request.XMLResponseWriter;
+import org.apache.solr.request.SolrParams.EchoParamStyle;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.update.DirectUpdateHandler;
@@ -649,10 +651,10 @@
 
   public void execute(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp) {
     // setup response header and handle request
-    final NamedList responseHeader = new SimpleOrderedMap();
+    final NamedList<Object> responseHeader = new SimpleOrderedMap<Object>();
     rsp.add("responseHeader", responseHeader);
     handler.handleRequest(req,rsp);
-    setResponseHeaderValues(responseHeader,req,rsp);
+    setResponseHeaderValues(handler,responseHeader,req,rsp);
 
     log.info(req.getContext().get("path") + " "
             + req.getParamString()+ " 0 "+
@@ -669,26 +671,36 @@
     execute(handler, req, rsp);
   }
   
-  protected void setResponseHeaderValues(NamedList responseHeader,SolrQueryRequest req, SolrQueryResponse rsp) {
+  protected void setResponseHeaderValues(SolrRequestHandler handler, NamedList<Object> responseHeader,SolrQueryRequest req, SolrQueryResponse rsp) {
     // TODO should check that responseHeader has not been replaced by handler
     
     final int qtime=(int)(rsp.getEndTime() - req.getStartTime());
     responseHeader.add("status",rsp.getException()==null ? 0 : 500);
     responseHeader.add("QTime",qtime);
+        
+    SolrParams params = req.getParams();
+    if( params.getBool(SolrParams.HEADER_ECHO_HANDLER, false) ) {
+      responseHeader.add("handler", handler.getName() );
+    }
     
     // Values for echoParams... false/true/all or false/explicit/all ???
-    final String EP_PARAM = "echoParams";
-    final String EXPLICIT = "explicit";
-    final String epValue = req.getParams().get(EP_PARAM); 
-    if (EXPLICIT.equals(epValue)) {
+    String ep = params.get( SolrParams.HEADER_ECHO_PARAMS, null );
+    if( ep != null ) {
+      EchoParamStyle echoParams = EchoParamStyle.get( ep );
+      if( echoParams == null ) {
+        throw new SolrException(400,"Invalid value '" + ep + "' for " + SolrParams.HEADER_ECHO_PARAMS 
+            + " parameter, use '" + EchoParamStyle.EXPLICIT + "' or '" + EchoParamStyle.ALL + "'" );
+      }
+      if( echoParams == EchoParamStyle.EXPLICIT ) {
         responseHeader.add("params", req.getOriginalParams().toNamedList());
-    } else if(epValue!=null) {
-      throw new SolrException(400,"Invalid value '" + epValue + "' for " + EP_PARAM + " parameter, use '" + EXPLICIT + "'");
+      }
+      else if( echoParams == EchoParamStyle.ALL ) {
+        responseHeader.add("params", req.getParams().toNamedList());
+      }
     }
   }
 
 
-
   final public static void log(Throwable e) {
     SolrException.logOnce(log,null,e);
   }
@@ -760,12 +772,4 @@
     return getQueryResponseWriter(request.getParam("wt")); 
   }
 }
-
-
-
-
-
-
-
-
 

Modified: lucene/solr/trunk/src/java/org/apache/solr/request/SolrParams.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/SolrParams.java?view=diff&rev=526634&r1=526633&r2=526634
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/SolrParams.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/SolrParams.java Sun Apr  8 19:29:24 2007
@@ -131,6 +131,35 @@
    */
   public static final String STREAM_CONTENTTYPE = "stream.contentType";
     
+  /** 'true' if the header should include the handler name */
+  public static final String HEADER_ECHO_HANDLER = "echoHandler";
+  
+  /** include the parameters in the header **/
+  public static final String HEADER_ECHO_PARAMS = "echoParams";
+  
+  /** valid values for: <code>echoParams</code> */
+  public enum EchoParamStyle {
+    EXPLICIT,
+    ALL,
+    NONE;
+    
+    public static EchoParamStyle get( String v ) {
+      if( v != null ) {
+        v = v.toUpperCase();
+        if( v.equals( "EXPLICIT" ) ) {
+          return EXPLICIT;
+        }
+        if( v.equals( "ALL") ) {
+          return ALL;
+        }
+        if( v.equals( "NONE") ) {  // the same as nothing...
+          return NONE;
+        }
+      }
+      return null;
+    }
+  };
+  
   /** returns the String value of a param, or null if not set */
   public abstract String get(String param);
 
@@ -331,5 +360,7 @@
     return result;
   }
 }
+
+
 
 

Modified: lucene/solr/trunk/src/java/org/apache/solr/util/TestHarness.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/util/TestHarness.java?view=diff&rev=526634&r1=526633&r2=526634
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/util/TestHarness.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/util/TestHarness.java Sun Apr  8 19:29:24 2007
@@ -424,7 +424,7 @@
     }
     public LocalSolrQueryRequest makeRequest(String ... q) {
       if (q.length==1) {
-      return new LocalSolrQueryRequest(TestHarness.this.getCore(),
+        return new LocalSolrQueryRequest(TestHarness.this.getCore(),
                                        q[0], qtype, start, limit, args);
       }
 

Modified: lucene/solr/trunk/src/test/org/apache/solr/EchoParamsTest.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/EchoParamsTest.java?view=diff&rev=526634&r1=526633&r2=526634
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/EchoParamsTest.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/EchoParamsTest.java Sun Apr  8 19:29:24 2007
@@ -51,4 +51,17 @@
     assertQ(req("foo"),HEADER_XPATH + "/lst[@name='params']/str[@name='wt'][.='xml']");
   }
 
+  public void testAllEchoParams() {
+    lrf = h.getRequestFactory
+      ("crazy_custom_qt", 0, 20,
+       "version","2.2",
+       "wt","xml",
+       "echoParams", "all",
+       "echoHandler","true"
+       );
+
+    assertQ(req("foo"),HEADER_XPATH + "/lst[@name='params']/str[@name='fl'][.='implicit']");
+    assertQ(req("foo"),HEADER_XPATH + "/str[@name='handler'][.='org.apache.solr.request.StandardRequestHandler']");
+  }
+
 }

Modified: lucene/solr/trunk/src/test/test-files/solr/crazy-path-to-config.xml
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/test-files/solr/crazy-path-to-config.xml?view=diff&rev=526634&r1=526633&r2=526634
==============================================================================
--- lucene/solr/trunk/src/test/test-files/solr/crazy-path-to-config.xml (original)
+++ lucene/solr/trunk/src/test/test-files/solr/crazy-path-to-config.xml Sun Apr  8 19:29:24 2007
@@ -57,7 +57,11 @@
   </query>
   
   <requestHandler name="standard" class="solr.StandardRequestHandler" />
-  <requestHandler name="crazy_custom_qt" class="solr.StandardRequestHandler" />
+  <requestHandler name="crazy_custom_qt" class="solr.StandardRequestHandler">
+    <lst name="defaults">
+      <str name="fl">implicit</str>
+    </lst>
+  </requestHandler>
   
   <queryResponseWriter name="standard" class="org.apache.solr.request.XMLResponseWriter"/>
   <queryResponseWriter name="useless" class="org.apache.solr.OutputWriterTest$UselessOutputWriter"/>