Return-Path: Delivered-To: apmail-lucene-solr-commits-archive@minotaur.apache.org Received: (qmail 40571 invoked from network); 18 Nov 2009 13:24:31 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 18 Nov 2009 13:24:31 -0000 Received: (qmail 38470 invoked by uid 500); 18 Nov 2009 13:24:31 -0000 Delivered-To: apmail-lucene-solr-commits-archive@lucene.apache.org Received: (qmail 38424 invoked by uid 500); 18 Nov 2009 13:24:31 -0000 Mailing-List: contact solr-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: solr-dev@lucene.apache.org Delivered-To: mailing list solr-commits@lucene.apache.org Received: (qmail 38415 invoked by uid 99); 18 Nov 2009 13:24:31 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Nov 2009 13:24:31 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Nov 2009 13:24:27 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D071723888CF; Wed, 18 Nov 2009 13:24:06 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Wed, 18 Nov 2009 13:24:06 -0000 To: solr-commits@lucene.apache.org From: noble@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20091118132406.D071723888CF@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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> templateVsVars = new HashMap>(); @SuppressWarnings("unchecked") public Object transformRow(Map row, Context context) { @@ -67,7 +68,7 @@ // Verify if all variables can be resolved or not boolean resolvable = true; - List variables = TemplateString.getVariables(expr); + List 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 getVars(String expr) { + List 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; /** *

@@ -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 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")); } }