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 no...@apache.org on 2009/11/18 14:24:06 UTC
svn commit: r881766 - in /lucene/solr/trunk/contrib/dataimporthandler:
CHANGES.txt
src/main/java/org/apache/solr/handler/dataimport/TemplateTransformer.java
src/test/java/org/apache/solr/handler/dataimport/TestTemplateTransformer.java
Author: noble
Date: Wed Nov 18 13:24:06 2009
New Revision: 881766
URL: http://svn.apache.org/viewvc?rev=881766&view=rev
Log:
SOLR-1547 TemplateTransformer should copy array/list more intelligently
Modified:
lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateTransformer.java
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestTemplateTransformer.java
Modified: lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt?rev=881766&r1=881765&r2=881766&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt Wed Nov 18 13:24:06 2009
@@ -22,6 +22,7 @@
----------------------
* SOLR-1525 allow DIH to refer to core properties (noble)
+* SOLR-1547 TemplateTransformer copy objects more intelligently when there when the template is a single variable (noble)
Optimizations
----------------------
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateTransformer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateTransformer.java?rev=881766&r1=881765&r2=881766&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateTransformer.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateTransformer.java Wed Nov 18 13:24:06 2009
@@ -49,6 +49,7 @@
public class TemplateTransformer extends Transformer {
private static final Logger LOG = LoggerFactory.getLogger(TemplateTransformer.class);
+ private Map<String ,List<String>> templateVsVars = new HashMap<String, List<String>>();
@SuppressWarnings("unchecked")
public Object transformRow(Map<String, Object> row, Context context) {
@@ -67,7 +68,7 @@
// Verify if all variables can be resolved or not
boolean resolvable = true;
- List<String> variables = TemplateString.getVariables(expr);
+ List<String> variables = getVars(expr);
for (String v : variables) {
if (resolver.resolve(v) == null) {
LOG.warn("Unable to resolve variable: " + v
@@ -78,13 +79,26 @@
if (!resolvable)
continue;
+ if(variables.size() == 1 && expr.startsWith("${") && expr.endsWith("}")){
+ row.put(column, resolver.resolve(variables.get(0)));
+ } else {
+ row.put(column, resolver.replaceTokens(expr));
+ }
- row.put(column, resolver.replaceTokens(expr));
}
return row;
}
+ private List<String> getVars(String expr) {
+ List<String> result = this.templateVsVars.get(expr);
+ if(result == null){
+ result = TemplateString.getVariables(expr);
+ this.templateVsVars.put(expr, result);
+ }
+ return result;
+ }
+
public static final String TEMPLATE = "template";
}
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestTemplateTransformer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestTemplateTransformer.java?rev=881766&r1=881765&r2=881766&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestTemplateTransformer.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestTemplateTransformer.java Wed Nov 18 13:24:06 2009
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Arrays;
/**
* <p>
@@ -43,14 +44,20 @@
fields.add(AbstractDataImportHandlerTest.createMap("column", "name",
TemplateTransformer.TEMPLATE,
"${e.lastName}, ${e.firstName} ${e.middleName}"));
+ fields.add(AbstractDataImportHandlerTest.createMap("column", "emails",
+ TemplateTransformer.TEMPLATE,
+ "${e.mail}"));
+
// test reuse of template output in another template
fields.add(AbstractDataImportHandlerTest.createMap("column", "mrname",
TemplateTransformer.TEMPLATE,"Mr ${e.name}"));
-
+
+ List<String> mails = Arrays.asList(new String[]{"a@b.com", "c@d.com"});
Map row = AbstractDataImportHandlerTest.createMap(
"firstName", "Shalin",
"middleName", "Shekhar",
- "lastName", "Mangar");
+ "lastName", "Mangar",
+ "mail", mails);
VariableResolverImpl resolver = new VariableResolverImpl();
resolver.addNamespace("e", row);
@@ -62,6 +69,7 @@
new TemplateTransformer().transformRow(row, context);
Assert.assertEquals("Mangar, Shalin Shekhar", row.get("name"));
Assert.assertEquals("Mr Mangar, Shalin Shekhar", row.get("mrname"));
+ Assert.assertEquals(mails,row.get("emails"));
}
}