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 2017/07/27 07:39:57 UTC
[1/2] lucene-solr:branch_7x: SOLR-10858: Make
UUIDUpdateProcessorFactory as Runtime URP
Repository: lucene-solr
Updated Branches:
refs/heads/branch_7x afcd96cf4 -> 494a25480
SOLR-10858: Make UUIDUpdateProcessorFactory as Runtime URP
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c21b1e79
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c21b1e79
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c21b1e79
Branch: refs/heads/branch_7x
Commit: c21b1e79fd22eb96247edc922aafbd2de82761b4
Parents: afcd96c
Author: Noble Paul <no...@apache.org>
Authored: Thu Jul 27 17:07:07 2017 +0930
Committer: Noble Paul <no...@apache.org>
Committed: Thu Jul 27 17:09:27 2017 +0930
----------------------------------------------------------------------
solr/CHANGES.txt | 2 +
.../processor/UUIDUpdateProcessorFactory.java | 35 +++++--
.../processor/UpdateRequestProcessorChain.java | 1 +
.../UUIDUpdateProcessorFallbackTest.java | 96 ++++++++++++++++----
.../src/update-request-processors.adoc | 10 ++
5 files changed, 117 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c21b1e79/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index ad4fa06..a63598c 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -44,6 +44,8 @@ New Features
* SOLR-11046: Add residuals Stream Evaluator (Joel Bernstein)
+* SOLR-10858: Make UUIDUpdateProcessorFactory as Runtime URP (Amit Sarkar, noble)
+
Bug Fixes
----------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c21b1e79/solr/core/src/java/org/apache/solr/update/processor/UUIDUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/UUIDUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/UUIDUpdateProcessorFactory.java
index ff8ff83..12b9694 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/UUIDUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/UUIDUpdateProcessorFactory.java
@@ -47,36 +47,55 @@ import org.apache.solr.schema.SchemaField;
* </processor>
* </pre>
*
+ *
* <p>
- * If field name is omitted in processor configuration,
+ * You can also incoke the processor with request handler param(s)
+ * as <code>uuid.fieldname</code> with <code>processor=uuid</code>
+ *
+ * curl -X POST -H Content-Type: application/json
+ * http://localhost:8983/solr/test/update/json/docs?processor=uuid;ampersand;uuid.fieldName=id;ampersand;commit=true
+ * --data-binary {"id":"1","title": "titleA"}
+ *
+ * NOTE: The param(s) provided in request handler will override / supersede processor's config.
+ *
+ * If field name is omitted in processor configuration and not provided in request handler param(s),
* then @{link org.apache.solr.schema.IndexSchema#getUniqueKeyField()}
* is used as field and a new <code>UUID</code> will be generated
* and added as the value of that field. The field type of the uniqueKeyField
* must be anything which accepts a string or UUID value.
+ *
+ *
+ *
* @see UUID
*/
public class UUIDUpdateProcessorFactory extends UpdateRequestProcessorFactory {
+ private static final String PREFIX_PARAM = "uuid.";
+ public static final String NAME = "uuid";
+ private static final String FIELD_PARAM = "fieldName";
+
+
protected String fieldName = null;
@SuppressWarnings("unchecked")
public void init(NamedList args) {
- Object obj = args.remove("fieldName");
+ Object obj = args.remove(FIELD_PARAM);
if (null != obj) {
fieldName = obj.toString();
}
-
- if (0 < args.size()) {
- throw new SolrException(SERVER_ERROR,
- "Unexpected init param(s): '" +
- args.getName(0) + "'");
- }
}
public UpdateRequestProcessor getInstance(SolrQueryRequest req,
SolrQueryResponse rsp,
UpdateRequestProcessor next ) {
+ String fieldName = this.fieldName;
+
+ String fname = req.getParams().get(PREFIX_PARAM+FIELD_PARAM);
+ if (!StringUtils.isEmpty(fname)) {
+ fieldName = fname;
+ }
+
if (StringUtils.isEmpty(fieldName)) {
SchemaField schemaField = req.getSchema().getUniqueKeyField();
fieldName = schemaField.getName();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c21b1e79/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java b/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
index 6bb212c..bb0c129 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
@@ -321,6 +321,7 @@ public final class UpdateRequestProcessorChain implements PluginInfoInitialized
public static final Map<String, Class> implicits = new ImmutableMap.Builder()
.put(TemplateUpdateProcessorFactory.NAME, TemplateUpdateProcessorFactory.class)
.put(AtomicUpdateProcessorFactory.NAME, AtomicUpdateProcessorFactory.class)
+ .put(UUIDUpdateProcessorFactory.NAME, UUIDUpdateProcessorFactory.class)
.build();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c21b1e79/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java b/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
index 2b10953..9561d5a 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
@@ -20,6 +20,7 @@ import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.SolrInputField;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.params.SolrParams;
import org.apache.solr.core.SolrCore;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
@@ -27,24 +28,29 @@ import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.update.AddUpdateCommand;
import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.lang.invoke.MethodHandles;
import java.util.Date;
+import java.util.List;
import java.util.UUID;
public class UUIDUpdateProcessorFallbackTest extends SolrTestCaseJ4 {
+ Date now = new Date();
+
@BeforeClass
public static void beforeClass() throws Exception {
initCore("solrconfig-update-processor-chains.xml", "schema.xml");
}
public void testFallbackToUnique() throws Exception {
- Date now = new Date();
// get all defaults
SolrInputDocument d = processAdd("default-values-fallback-to-unique",
- doc(f("name", "Existing", "Values")));
+ doc(f("name", "Existing", "Values")));
assertNotNull(d);
@@ -62,18 +68,18 @@ public class UUIDUpdateProcessorFallbackTest extends SolrTestCaseJ4 {
// defaults already specified
d = processAdd("default-values-fallback-to-unique",
- doc(f("timestamp", now),
- f("id", "550e8400-e29b-41d4-a716-446655440000"),
- f("processor_default_s", "I HAVE A VALUE"),
- f("processor_default_i", 12345),
- f("name", "Existing", "Values")));
+ doc(f("timestamp", now),
+ f("id", "550e8400-e29b-41d4-a716-446655440000"),
+ f("processor_default_s", "I HAVE A VALUE"),
+ f("processor_default_i", 12345),
+ f("name", "Existing", "Values")));
assertNotNull(d);
assertEquals("550e8400-e29b-41d4-a716-446655440000",
- d.getFieldValue("id"));
+ d.getFieldValue("id"));
- // defaults already specified
+ // defaults already specified //both config and request param not passed.
d = processAdd("default-values-fallback-to-unique-automatically",
doc(f("timestamp", now),
f("id", "550e8400-e29b-41d4-a716-446655440000"),
@@ -88,8 +94,52 @@ public class UUIDUpdateProcessorFallbackTest extends SolrTestCaseJ4 {
assertEquals(121, d.getFieldValue("processor_default_i"));
}
+ public void testRequesTParams() throws Exception {
+ SolrInputDocument d = processAdd(null,
+ doc(f("name", "Existing", "Values"), f( "id","75765")), params("processor", "uuid", "uuid.fieldName", "id_s"));
+
+ assertNotNull(d);
+
+ assertNotNull(d.getFieldValue("id_s"));
+ assertNotNull(UUID.fromString(d.getFieldValue("id_s").toString()));
+
+
+
+ // defaults already specified
+ d = processAdd(null,
+ doc(f("timestamp", now),
+ f("id", "454435"),
+ f("id_s", "550e8400-e29b-41d4-a716-446655440000"),
+ f("processor_default_s", "I HAVE A VALUE"),
+ f("processor_default_i", 121),
+ f("name", "Existing", "Values"))
+ , params("processor", "uuid", "uuid.fieldName", "id_s"));
+
+ assertNotNull(d);
+
+ assertEquals("550e8400-e29b-41d4-a716-446655440000",
+ d.getFieldValue("id_s"));
+ assertEquals(121, d.getFieldValue("processor_default_i"));
+ }
+
+ public void testProcessorPrefixReqParam() throws Exception {
+ List<UpdateRequestProcessorFactory> processors = UpdateRequestProcessorChain.getReqProcessors("uuid", h.getCore());
+ UpdateRequestProcessorFactory processorFactory = processors.get(0);
+ assertTrue(processorFactory instanceof UUIDUpdateProcessorFactory);
- /**
+ SolrQueryResponse rsp = new SolrQueryResponse();
+ SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams());
+ AddUpdateCommand cmd = new AddUpdateCommand(req);
+ cmd.solrDoc = new SolrInputDocument();
+ cmd.solrDoc.addField("random_s", "random_val");
+
+ processorFactory.getInstance(req, rsp, null).processAdd(cmd);
+ assertNotNull(cmd.solrDoc);
+ assertNotNull(cmd.solrDoc.get("id"));
+ assertNotNull(cmd.solrDoc.get("id").getValue());
+ }
+
+ /**
* Convenience method for building up SolrInputDocuments
*/
SolrInputDocument doc(SolrInputField... fields) {
@@ -100,7 +150,7 @@ public class UUIDUpdateProcessorFallbackTest extends SolrTestCaseJ4 {
return d;
}
- /**
+ /**
* Convenience method for building up SolrInputFields
*/
SolrInputField field(String name, float boost, Object... values) {
@@ -111,7 +161,7 @@ public class UUIDUpdateProcessorFallbackTest extends SolrTestCaseJ4 {
return f;
}
- /**
+ /**
* Convenience method for building up SolrInputFields with default boost
*/
SolrInputField f(String name, Object... values) {
@@ -120,22 +170,30 @@ public class UUIDUpdateProcessorFallbackTest extends SolrTestCaseJ4 {
/**
- * Runs a document through the specified chain, and returns the final
- * document used when the chain is completed (NOTE: some chains may
+ * Runs a document through the specified chain, and returns the final
+ * document used when the chain is completed (NOTE: some chains may
* modify the document in place
*/
- SolrInputDocument processAdd(final String chain,
- final SolrInputDocument docIn)
- throws IOException {
+
+ SolrInputDocument processAdd(final String chain,
+ final SolrInputDocument docIn) throws IOException {
+ return processAdd(chain, docIn, params());
+ }
+
+ SolrInputDocument processAdd(final String chain,
+ final SolrInputDocument docIn, SolrParams params)
+ throws IOException {
SolrCore core = h.getCore();
- UpdateRequestProcessorChain pc = core.getUpdateProcessingChain(chain);
+ UpdateRequestProcessorChain pc = chain == null ?
+ core.getUpdateProcessorChain(params) :
+ core.getUpdateProcessingChain(chain);
assertNotNull("No Chain named: " + chain, pc);
SolrQueryResponse rsp = new SolrQueryResponse();
SolrQueryRequest req = new LocalSolrQueryRequest
- (core, new ModifiableSolrParams());
+ (core, params);
try {
SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req,rsp));
AddUpdateCommand cmd = new AddUpdateCommand(req);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c21b1e79/solr/solr-ref-guide/src/update-request-processors.adoc
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/update-request-processors.adoc b/solr/solr-ref-guide/src/update-request-processors.adoc
index a11d74a..981c2e1 100644
--- a/solr/solr-ref-guide/src/update-request-processors.adoc
+++ b/solr/solr-ref-guide/src/update-request-processors.adoc
@@ -398,3 +398,13 @@ The above parameters convert a normal `update` operation on
* `field2` to an atomic `set` operation
* `field3` to an atomic `inc` operation
* `field4` to an atomic `remove` operation
+
+==== UUIDUpdateProcessorFactory
+
+Name of the processor is `uuid` . Use it to add a UUID to a field
+example:
+
+[source,bash]
+----
+processor=uuid&uuid.fieldName=somefield_name
+----
[2/2] lucene-solr:branch_7x: SOLR-10858: ununsed imports
Posted by no...@apache.org.
SOLR-10858: ununsed imports
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/494a2548
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/494a2548
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/494a2548
Branch: refs/heads/branch_7x
Commit: 494a25480e8c14e500cf543a9ff4a7d37c3656d0
Parents: c21b1e7
Author: Noble Paul <no...@apache.org>
Authored: Thu Jul 27 17:07:51 2017 +0930
Committer: Noble Paul <no...@apache.org>
Committed: Thu Jul 27 17:09:39 2017 +0930
----------------------------------------------------------------------
.../processor/UUIDUpdateProcessorFallbackTest.java | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/494a2548/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java b/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
index 9561d5a..e57e0ef 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java
@@ -16,6 +16,11 @@
*/
package org.apache.solr.update.processor;
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.SolrInputField;
@@ -28,14 +33,6 @@ import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.update.AddUpdateCommand;
import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
public class UUIDUpdateProcessorFallbackTest extends SolrTestCaseJ4 {