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 sh...@apache.org on 2008/09/24 22:03:58 UTC

svn commit: r698707 - /lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestXPathEntityProcessor.java

Author: shalin
Date: Wed Sep 24 13:03:58 2008
New Revision: 698707

URL: http://svn.apache.org/viewvc?rev=698707&view=rev
Log:
Adding a test case for reading multi valued fields from xml

Modified:
    lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestXPathEntityProcessor.java

Modified: lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestXPathEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestXPathEntityProcessor.java?rev=698707&r1=698706&r2=698707&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestXPathEntityProcessor.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestXPathEntityProcessor.java Wed Sep 24 13:03:58 2008
@@ -52,7 +52,7 @@
     fields.add(createMap("column", "artist", "xpath", "/catalog/cd/artist"));
     fields.add(createMap("column", "year", "xpath", "/catalog/cd/year"));
     Context c = AbstractDataImportHandlerTest.getContext(null,
-            new VariableResolverImpl(), getds(), 0, fields, entityAttrs);
+            new VariableResolverImpl(), getDataSource(cdData), 0, fields, entityAttrs);
     XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
     xPathEntityProcessor.init(c);
     List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
@@ -69,6 +69,26 @@
   }
 
   @Test
+  public void testMultiValued() throws Exception  {
+    Map entityAttrs = createMap("name", "e", "url", "testdata.xml",
+            XPathEntityProcessor.FOR_EACH, "/root");
+    List fields = new ArrayList();
+    fields.add(createMap("column", "a", "xpath", "/root/a", DataImporter.MULTI_VALUED, "true"));
+    Context c = AbstractDataImportHandlerTest.getContext(null,
+            new VariableResolverImpl(), getDataSource(testXml), 0, fields, entityAttrs);
+    XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
+    xPathEntityProcessor.init(c);
+    List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
+    while (true) {
+      Map<String, Object> row = xPathEntityProcessor.nextRow();
+      if (row == null)
+        break;
+      result.add(row);
+    }
+    Assert.assertEquals(2, ((List)result.get(0).get("a")).size());
+  }
+
+  @Test
   public void withFieldsAndXpathStream() throws Exception {
     Map entityAttrs = createMap("name", "e", "url", "cd.xml",
         XPathEntityProcessor.FOR_EACH, "/catalog/cd", "stream", "true", "batchSize","1");
@@ -77,7 +97,7 @@
     fields.add(createMap("column", "artist", "xpath", "/catalog/cd/artist"));
     fields.add(createMap("column", "year", "xpath", "/catalog/cd/year"));
     Context c = AbstractDataImportHandlerTest.getContext(null,
-        new VariableResolverImpl(), getds(), 0, fields, entityAttrs);
+        new VariableResolverImpl(), getDataSource(cdData), 0, fields, entityAttrs);
     XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
     xPathEntityProcessor.init(c);
     List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
@@ -105,7 +125,7 @@
             XPathEntityProcessor.USE_SOLR_ADD_SCHEMA, "true", "xsl", ""
             + new File(tmpdir, "x.xsl").getAbsolutePath(), "url", "cd.xml");
     Context c = AbstractDataImportHandlerTest.getContext(null,
-            new VariableResolverImpl(), getds(), 0, null, entityAttrs);
+            new VariableResolverImpl(), getDataSource(cdData), 0, null, entityAttrs);
     XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
     xPathEntityProcessor.init(c);
     List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
@@ -121,7 +141,7 @@
     Assert.assertEquals("1982", result.get(2).get("year"));
   }
 
-  private DataSource<Reader> getds() {
+  private DataSource<Reader> getDataSource(final String xml) {
     return new DataSource<Reader>() {
 
       public void init(Context context, Properties initProps) {
@@ -131,7 +151,7 @@
       }
 
       public Reader getData(String query) {
-        return new StringReader(cdData);
+        return new StringReader(xml);
       }
     };
   }
@@ -182,4 +202,6 @@
           + "\t\t<company>RCA</company>\n"
           + "\t\t<price>9.90</price>\n"
           + "\t\t<year>1982</year>\n" + "\t</cd>\n" + "</catalog>\t";
+
+  private static final String testXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><a>1</a><a>2</a></root>";
 }