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"/>