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