You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2014/08/02 20:40:43 UTC
svn commit: r1615345 - in /lucene/dev/trunk/solr: ./
contrib/morphlines-core/src/test-files/solr/collection1/conf/
contrib/morphlines-core/src/test-files/solr/minimr/conf/
contrib/morphlines-core/src/test-files/solr/mrunit/conf/
contrib/morphlines-core...
Author: noble
Date: Sat Aug 2 18:40:42 2014
New Revision: 1615345
URL: http://svn.apache.org/r1615345
Log:
SOLR-6294 ,SOLR-6302
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml
lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml
lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml
lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
lucene/dev/trunk/solr/example/example-DIH/solr/db/conf/solrconfig.xml
lucene/dev/trunk/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
lucene/dev/trunk/solr/example/example-DIH/solr/rss/conf/solrconfig.xml
lucene/dev/trunk/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
lucene/dev/trunk/solr/example/example-DIH/solr/tika/conf/solrconfig.xml
lucene/dev/trunk/solr/example/example-schemaless/solr/collection1/conf/solrconfig.xml
lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Sat Aug 2 18:40:42 2014
@@ -166,6 +166,12 @@ New Features
a UUID into the unique Key field.
(Vitaliy Zhovtyuk, hossman, Steve Rowe, Erik Hatcher, shalin)
+* SOLR-6294: Remove the restriction of adding json by only wrapping it in an array in a
+ new path /update/json/docs (Noble Paul , hossman, Yonik Seeley, Steve Rowe)
+
+* SOLR-6302: UpdateRequestHandlers are registered implicitly /update ,
+ /update/json, /update/csv , /update/json/docs (Noble Paul)
+
Bug Fixes
----------------------
Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -947,8 +947,8 @@
</requestHandler>
- <!-- Update Request Handler.
-
+ <!-- Update Request Handler.
+
http://wiki.apache.org/solr/UpdateXmlMessages
The canonical Request Handler for Modifying the Index through
@@ -957,17 +957,17 @@
Note: Since solr1.1 requestHandlers requires a valid content
type header if posted in the body. For example, curl now
requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
+
+ To override the request content type and force a specific
+ Content-type, use the request parameter:
?update.contentType=text/csv
-
+
This handler will pick a response format to match the input
if the 'wt' parameter is not explicit
-->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
+ <!-- See below for information on defining
+ updateRequestProcessorChains that can be used by name
on each Update Request
-->
<!--
@@ -976,19 +976,6 @@
</lst>
-->
</requestHandler>
-
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.CSVRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
-
<!-- Field Analysis Request Handler
RequestHandler that provides much the same functionality as
Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -965,8 +965,8 @@
</requestHandler>
- <!-- Update Request Handler.
-
+ <!-- Update Request Handler.
+
http://wiki.apache.org/solr/UpdateXmlMessages
The canonical Request Handler for Modifying the Index through
@@ -975,17 +975,17 @@
Note: Since solr1.1 requestHandlers requires a valid content
type header if posted in the body. For example, curl now
requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
+
+ To override the request content type and force a specific
+ Content-type, use the request parameter:
?update.contentType=text/csv
-
+
This handler will pick a response format to match the input
if the 'wt' parameter is not explicit
-->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
+ <!-- See below for information on defining
+ updateRequestProcessorChains that can be used by name
on each Update Request
-->
<!--
@@ -995,18 +995,6 @@
-->
</requestHandler>
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.CSVRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
-
<!-- Field Analysis Request Handler
RequestHandler that provides much the same functionality as
Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -970,48 +970,6 @@
</requestHandler>
- <!-- Update Request Handler.
-
- http://wiki.apache.org/solr/UpdateXmlMessages
-
- The canonical Request Handler for Modifying the Index through
- commands specified using XML, JSON, CSV, or JAVABIN
-
- Note: Since solr1.1 requestHandlers requires a valid content
- type header if posted in the body. For example, curl now
- requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
- ?update.contentType=text/csv
-
- This handler will pick a response format to match the input
- if the 'wt' parameter is not explicit
- -->
- <requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
- on each Update Request
- -->
- <!--
- <lst name="defaults">
- <str name="update.chain">dedupe</str>
- </lst>
- -->
- </requestHandler>
-
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.CSVRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
-
<!-- Field Analysis Request Handler
RequestHandler that provides much the same functionality as
Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -967,49 +967,6 @@
</arr>
</requestHandler>
-
- <!-- Update Request Handler.
-
- http://wiki.apache.org/solr/UpdateXmlMessages
-
- The canonical Request Handler for Modifying the Index through
- commands specified using XML, JSON, CSV, or JAVABIN
-
- Note: Since solr1.1 requestHandlers requires a valid content
- type header if posted in the body. For example, curl now
- requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
- ?update.contentType=text/csv
-
- This handler will pick a response format to match the input
- if the 'wt' parameter is not explicit
- -->
- <requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
- on each Update Request
- -->
- <!--
- <lst name="defaults">
- <str name="update.chain">dedupe</str>
- </lst>
- -->
- </requestHandler>
-
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.CSVRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
-
<!-- Field Analysis Request Handler
RequestHandler that provides much the same functionality as
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestHandlers.java?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestHandlers.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestHandlers.java Sat Aug 2 18:40:42 2014
@@ -18,9 +18,12 @@
package org.apache.solr.core;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -135,10 +138,12 @@ public final class RequestHandlers {
* Handlers will be registered and initialized in the order they appear in solrconfig.xml
*/
- void initHandlersFromConfig(SolrConfig config ){
+ void initHandlersFromConfig(SolrConfig config, List<PluginInfo> implicits){
// use link map so we iterate in the same order
Map<PluginInfo,SolrRequestHandler> handlers = new LinkedHashMap<>();
- for (PluginInfo info : config.getPluginInfos(SolrRequestHandler.class.getName())) {
+ ArrayList<PluginInfo> infos = new ArrayList<>(implicits);
+ infos.addAll(config.getPluginInfos(SolrRequestHandler.class.getName()));
+ for (PluginInfo info : infos) {
try {
SolrRequestHandler requestHandler;
String startup = info.attributes.get("startup") ;
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java Sat Aug 2 18:40:42 2014
@@ -39,6 +39,7 @@ import org.apache.solr.common.util.Named
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.DirectoryFactory.DirContext;
import org.apache.solr.handler.SnapPuller;
+import org.apache.solr.handler.UpdateRequestHandler;
import org.apache.solr.handler.admin.ShowFileRequestHandler;
import org.apache.solr.handler.component.AnalyticsComponent;
import org.apache.solr.handler.component.DebugComponent;
@@ -802,7 +803,9 @@ public final class SolrCore implements S
// Processors initialized before the handlers
updateProcessorChains = loadUpdateProcessorChains();
reqHandlers = new RequestHandlers(this);
- reqHandlers.initHandlersFromConfig(solrConfig);
+ List<PluginInfo> implicitReqHandlerInfo = new ArrayList<>();
+ UpdateRequestHandler.addImplicits(implicitReqHandlerInfo);
+ reqHandlers.initHandlersFromConfig(solrConfig, implicitReqHandlerInfo);
// Handle things that should eventually go away
initDeprecatedSupport();
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java Sat Aug 2 18:40:42 2014
@@ -17,12 +17,15 @@
package org.apache.solr.handler;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.ModifiableSolrParams;
@@ -30,6 +33,7 @@ import org.apache.solr.common.params.Sol
import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.PluginInfo;
import org.apache.solr.handler.loader.CSVLoader;
import org.apache.solr.handler.loader.ContentStreamLoader;
import org.apache.solr.handler.loader.JavabinLoader;
@@ -41,6 +45,9 @@ import org.apache.solr.update.processor.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static java.util.Collections.singletonMap;
+import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
+
/**
* UpdateHandler that uses content-type to pick the right Loader
*/
@@ -57,9 +64,9 @@ public class UpdateRequestHandler extend
public static final String SOFT_COMMIT = "softCommit";
public static final String OVERWRITE = "overwrite";
-
+
public static final String VERSION = "version";
-
+
// NOTE: This constant is for use with the <add> XML tag, not the HTTP param with same name
public static final String COMMIT_WITHIN = "commitWithin";
@@ -69,7 +76,7 @@ public class UpdateRequestHandler extend
@Override
public void load(SolrQueryRequest req, SolrQueryResponse rsp,
ContentStream stream, UpdateRequestProcessor processor) throws Exception {
-
+
String type = req.getParams().get(UpdateParams.ASSUME_CONTENT_TYPE);
if(type == null) {
type = stream.getContentType();
@@ -91,7 +98,7 @@ public class UpdateRequestHandler extend
}
loader.load(req, rsp, stream, processor);
}
-
+
private void setDefaultWT(SolrQueryRequest req, ContentStreamLoader loader) {
SolrParams params = req.getParams();
if( params.get(CommonParams.WT) == null ) {
@@ -100,21 +107,21 @@ public class UpdateRequestHandler extend
if(req.getCore().getQueryResponseWriter(wt)!=null) {
Map<String,String> map = new HashMap<>(1);
map.put(CommonParams.WT, wt);
- req.setParams(SolrParams.wrapDefaults(params,
+ req.setParams(SolrParams.wrapDefaults(params,
new MapSolrParams(map)));
}
}
}
};
-
+
@Override
public void init(NamedList args) {
super.init(args);
-
+
// Since backed by a non-thread safe Map, it should not be modifiable
loaders = Collections.unmodifiableMap(createDefaultLoaders(args));
}
-
+
protected void setAssumeContentType(String ct) {
if(invariants==null) {
Map<String,String> map = new HashMap<>();
@@ -127,7 +134,7 @@ public class UpdateRequestHandler extend
invariants = params;
}
}
-
+
protected Map<String,ContentStreamLoader> createDefaultLoaders(NamedList args) {
SolrParams p = null;
if(args!=null) {
@@ -143,13 +150,13 @@ public class UpdateRequestHandler extend
registry.put("text/json", registry.get("application/json") );
return registry;
}
-
+
@Override
protected ContentStreamLoader newLoader(SolrQueryRequest req, final UpdateRequestProcessor processor) {
return instance;
}
-
+
//////////////////////// SolrInfoMBeans methods //////////////////////
@Override
@@ -161,6 +168,20 @@ public class UpdateRequestHandler extend
public String getSource() {
return "$URL$";
}
+
+ public static void addImplicits(List<PluginInfo> implicits) {
+ implicits.add(getPluginInfo("/update",Collections.emptyMap()));
+ implicits.add(getPluginInfo("/update/json", singletonMap("update.contentType", "application/json")));
+ implicits.add(getPluginInfo("/update/csv", singletonMap("update.contentType", "application/csv")));
+ implicits.add(getPluginInfo("/update/json/docs", makeMap("update.contentType", "application/json", "json.command","false")));
+ }
+
+ static PluginInfo getPluginInfo(String name, Map defaults){
+ Map m = makeMap("name", name, "class", UpdateRequestHandler.class.getName());
+ return new PluginInfo("requestHandler", m, new NamedList<>( singletonMap("defaults", new NamedList(defaults))) ,null);
+
+ }
+
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java Sat Aug 2 18:40:42 2014
@@ -109,6 +109,10 @@ public class JsonLoader extends ContentS
@SuppressWarnings("fallthrough")
void processUpdate() throws IOException
{
+ if("false".equals( req.getParams().get("json.command"))){
+ handleStreamingSingleDocs();
+ return;
+ }
int ev = parser.nextEvent();
while( ev != JSONParser.EOF ) {
@@ -178,6 +182,26 @@ public class JsonLoader extends ContentS
}
}
+ private void handleStreamingSingleDocs() throws IOException
+ {
+ while( true ) {
+ int ev = parser.nextEvent();
+ if(ev == JSONParser.EOF) return;
+ if(ev == JSONParser.OBJECT_START) {
+ assertEvent(ev, JSONParser.OBJECT_START);
+ AddUpdateCommand cmd = new AddUpdateCommand(req);
+ cmd.commitWithin = commitWithin;
+ cmd.overwrite = overwrite;
+ cmd.solrDoc = parseDoc(ev);
+ processor.processAdd(cmd);
+ } else if(ev == JSONParser.ARRAY_START){
+ handleAdds();
+ } else{
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unexpected event :"+ev);
+ }
+ }
+ }
+
//
// "delete":"id"
// "delete":["id1","id2"]
@@ -384,10 +408,10 @@ public class JsonLoader extends ContentS
AddUpdateCommand cmd = new AddUpdateCommand(req);
cmd.commitWithin = commitWithin;
cmd.overwrite = overwrite;
-
+
int ev = parser.nextEvent();
if (ev == JSONParser.ARRAY_END) break;
-
+
assertEvent(ev, JSONParser.OBJECT_START);
cmd.solrDoc = parseDoc(ev);
processor.processAdd(cmd);
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java Sat Aug 2 18:40:42 2014
@@ -39,6 +39,14 @@ public class RequestHandlersTest extends
}
@Test
+ public void testImplicitRequestHandlers(){
+ SolrCore core = h.getCore();
+ assertNotNull(core.getRequestHandler( "/update/json"));
+ assertNotNull(core.getRequestHandler( "/update/json/docs"));
+ assertNotNull(core.getRequestHandler( "/update/csv"));
+ }
+
+ @Test
public void testLazyLoading() {
SolrCore core = h.getCore();
SolrRequestHandler handler = core.getRequestHandler( "lazy" );
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java Sat Aug 2 18:40:42 2014
@@ -255,6 +255,48 @@ public class JsonLoaderTest extends Solr
req.close();
}
+ public void testJsonDocFormat() throws Exception{
+ String doc = "\n" +
+ "\n" +
+ "{\"bool\": true,\n" +
+ " \"f0\": \"v0\",\n" +
+ " \"f2\": {\n" +
+ " \t \"boost\": 2.3,\n" +
+ " \t \"value\": \"test\"\n" +
+ " \t },\n" +
+ "\"array\": [ \"aaa\", \"bbb\" ],\n" +
+ "\"boosted\": {\n" +
+ " \t \"boost\": 6.7,\n" +
+ " \t \"value\": [ \"aaa\", \"bbb\" ]\n" +
+ " \t }\n" +
+ " }\n" +
+ "\n" +
+ "\n" +
+ " {\"f1\": \"v1\",\n" +
+ " \"f1\": \"v2\",\n" +
+ " \"f2\": null\n" +
+ " }\n";
+ SolrQueryRequest req = req("json.command","false");
+ SolrQueryResponse rsp = new SolrQueryResponse();
+ BufferingRequestProcessor p = new BufferingRequestProcessor(null);
+ JsonLoader loader = new JsonLoader();
+ loader.load(req, rsp, new ContentStreamBase.StringStream(doc), p);
+
+
+ assertEquals( 2, p.addCommands.size() );
+
+
+ doc = "[{'id':'1'},{'id':'2'}]".replace('\'', '"');
+ req = req("json.command","false");
+ rsp = new SolrQueryResponse();
+ p = new BufferingRequestProcessor(null);
+ loader = new JsonLoader();
+ loader.load(req, rsp, new ContentStreamBase.StringStream(doc), p);
+ assertEquals( 2, p.addCommands.size() );
+
+
+ }
+
public void testExtendedFieldValues() throws Exception {
Modified: lucene/dev/trunk/solr/example/example-DIH/solr/db/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/example-DIH/solr/db/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/example-DIH/solr/db/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/example-DIH/solr/db/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -1013,8 +1013,8 @@
</requestHandler>
- <!-- Update Request Handler.
-
+ <!-- Update Request Handler.
+
http://wiki.apache.org/solr/UpdateXmlMessages
The canonical Request Handler for Modifying the Index through
@@ -1023,17 +1023,17 @@
Note: Since solr1.1 requestHandlers requires a valid content
type header if posted in the body. For example, curl now
requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
+
+ To override the request content type and force a specific
+ Content-type, use the request parameter:
?update.contentType=text/csv
-
+
This handler will pick a response format to match the input
if the 'wt' parameter is not explicit
-->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
+ <!-- See below for information on defining
+ updateRequestProcessorChains that can be used by name
on each Update Request
-->
<!--
@@ -1043,17 +1043,7 @@
-->
</requestHandler>
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
+
<!-- Solr Cell Update Request Handler
Modified: lucene/dev/trunk/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/example-DIH/solr/mail/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/example-DIH/solr/mail/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/example-DIH/solr/mail/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -1015,49 +1015,6 @@
</arr>
</requestHandler>
-
- <!-- Update Request Handler.
-
- http://wiki.apache.org/solr/UpdateXmlMessages
-
- The canonical Request Handler for Modifying the Index through
- commands specified using XML, JSON, CSV, or JAVABIN
-
- Note: Since solr1.1 requestHandlers requires a valid content
- type header if posted in the body. For example, curl now
- requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
- ?update.contentType=text/csv
-
- This handler will pick a response format to match the input
- if the 'wt' parameter is not explicit
- -->
- <requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
- on each Update Request
- -->
- <!--
- <lst name="defaults">
- <str name="update.chain">dedupe</str>
- </lst>
- -->
- </requestHandler>
-
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
-
<!-- Solr Cell Update Request Handler
http://wiki.apache.org/solr/ExtractingRequestHandler
Modified: lucene/dev/trunk/solr/example/example-DIH/solr/rss/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/example-DIH/solr/rss/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/example-DIH/solr/rss/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/example-DIH/solr/rss/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -1013,48 +1013,6 @@
</requestHandler>
- <!-- Update Request Handler.
-
- http://wiki.apache.org/solr/UpdateXmlMessages
-
- The canonical Request Handler for Modifying the Index through
- commands specified using XML, JSON, CSV, or JAVABIN
-
- Note: Since solr1.1 requestHandlers requires a valid content
- type header if posted in the body. For example, curl now
- requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
- ?update.contentType=text/csv
-
- This handler will pick a response format to match the input
- if the 'wt' parameter is not explicit
- -->
- <requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
- on each Update Request
- -->
- <!--
- <lst name="defaults">
- <str name="update.chain">dedupe</str>
- </lst>
- -->
- </requestHandler>
-
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
-
<!-- Solr Cell Update Request Handler
http://wiki.apache.org/solr/ExtractingRequestHandler
Modified: lucene/dev/trunk/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/example-DIH/solr/solr/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/example-DIH/solr/solr/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/example-DIH/solr/solr/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -1043,18 +1043,6 @@
-->
</requestHandler>
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
-
<!-- Solr Cell Update Request Handler
http://wiki.apache.org/solr/ExtractingRequestHandler
Modified: lucene/dev/trunk/solr/example/example-DIH/solr/tika/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/example-DIH/solr/tika/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/example-DIH/solr/tika/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/example-DIH/solr/tika/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -1016,8 +1016,8 @@
</requestHandler>
- <!-- Update Request Handler.
-
+ <!-- Update Request Handler.
+
http://wiki.apache.org/solr/UpdateXmlMessages
The canonical Request Handler for Modifying the Index through
@@ -1026,17 +1026,17 @@
Note: Since solr1.1 requestHandlers requires a valid content
type header if posted in the body. For example, curl now
requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
+
+ To override the request content type and force a specific
+ Content-type, use the request parameter:
?update.contentType=text/csv
-
+
This handler will pick a response format to match the input
if the 'wt' parameter is not explicit
-->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
+ <!-- See below for information on defining
+ updateRequestProcessorChains that can be used by name
on each Update Request
-->
<!--
@@ -1046,17 +1046,6 @@
-->
</requestHandler>
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- </lst>
- </requestHandler>
<!-- Solr Cell Update Request Handler
Modified: lucene/dev/trunk/solr/example/example-schemaless/solr/collection1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/example-schemaless/solr/collection1/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/example-schemaless/solr/collection1/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/example-schemaless/solr/collection1/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -1001,20 +1001,6 @@
</lst>
</requestHandler>
- <!-- for back compat with clients using /update/json and /update/csv -->
- <requestHandler name="/update/json" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/json</str>
- <str name="update.chain">add-unknown-fields-to-the-schema</str>
- </lst>
- </requestHandler>
- <requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
- <lst name="defaults">
- <str name="stream.contentType">application/csv</str>
- <str name="update.chain">add-unknown-fields-to-the-schema</str>
- </lst>
- </requestHandler>
-
<!-- Solr Cell Update Request Handler
http://wiki.apache.org/solr/ExtractingRequestHandler
Modified: lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml?rev=1615345&r1=1615344&r2=1615345&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml Sat Aug 2 18:40:42 2014
@@ -1011,8 +1011,8 @@
</requestHandler>
- <!-- Update Request Handler.
-
+ <!-- Update Request Handler.
+
http://wiki.apache.org/solr/UpdateXmlMessages
The canonical Request Handler for Modifying the Index through
@@ -1021,17 +1021,17 @@
Note: Since solr1.1 requestHandlers requires a valid content
type header if posted in the body. For example, curl now
requires: -H 'Content-type:text/xml; charset=utf-8'
-
- To override the request content type and force a specific
- Content-type, use the request parameter:
+
+ To override the request content type and force a specific
+ Content-type, use the request parameter:
?update.contentType=text/csv
-
+
This handler will pick a response format to match the input
if the 'wt' parameter is not explicit
-->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
- <!-- See below for information on defining
- updateRequestProcessorChains that can be used by name
+ <!-- See below for information on defining
+ updateRequestProcessorChains that can be used by name
on each Update Request
-->
<!--
@@ -1041,7 +1041,7 @@
-->
</requestHandler>
- <!-- for back compat with clients using /update/json and /update/csv -->
+ <!-- The following are implicitly added
<requestHandler name="/update/json" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="stream.contentType">application/json</str>
@@ -1052,6 +1052,7 @@
<str name="stream.contentType">application/csv</str>
</lst>
</requestHandler>
+ -->
<!-- Solr Cell Update Request Handler