mirror of https://github.com/apache/lucene.git
Adding a test case for reading multi valued fields from xml
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@698707 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
db7ca44431
commit
0507ce4512
|
@ -52,7 +52,7 @@ public class TestXPathEntityProcessor {
|
||||||
fields.add(createMap("column", "artist", "xpath", "/catalog/cd/artist"));
|
fields.add(createMap("column", "artist", "xpath", "/catalog/cd/artist"));
|
||||||
fields.add(createMap("column", "year", "xpath", "/catalog/cd/year"));
|
fields.add(createMap("column", "year", "xpath", "/catalog/cd/year"));
|
||||||
Context c = AbstractDataImportHandlerTest.getContext(null,
|
Context c = AbstractDataImportHandlerTest.getContext(null,
|
||||||
new VariableResolverImpl(), getds(), 0, fields, entityAttrs);
|
new VariableResolverImpl(), getDataSource(cdData), 0, fields, entityAttrs);
|
||||||
XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
|
XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
|
||||||
xPathEntityProcessor.init(c);
|
xPathEntityProcessor.init(c);
|
||||||
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
|
||||||
|
@ -68,6 +68,26 @@ public class TestXPathEntityProcessor {
|
||||||
Assert.assertEquals("1982", result.get(2).get("year"));
|
Assert.assertEquals("1982", result.get(2).get("year"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Test
|
||||||
public void withFieldsAndXpathStream() throws Exception {
|
public void withFieldsAndXpathStream() throws Exception {
|
||||||
Map entityAttrs = createMap("name", "e", "url", "cd.xml",
|
Map entityAttrs = createMap("name", "e", "url", "cd.xml",
|
||||||
|
@ -77,7 +97,7 @@ public class TestXPathEntityProcessor {
|
||||||
fields.add(createMap("column", "artist", "xpath", "/catalog/cd/artist"));
|
fields.add(createMap("column", "artist", "xpath", "/catalog/cd/artist"));
|
||||||
fields.add(createMap("column", "year", "xpath", "/catalog/cd/year"));
|
fields.add(createMap("column", "year", "xpath", "/catalog/cd/year"));
|
||||||
Context c = AbstractDataImportHandlerTest.getContext(null,
|
Context c = AbstractDataImportHandlerTest.getContext(null,
|
||||||
new VariableResolverImpl(), getds(), 0, fields, entityAttrs);
|
new VariableResolverImpl(), getDataSource(cdData), 0, fields, entityAttrs);
|
||||||
XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
|
XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
|
||||||
xPathEntityProcessor.init(c);
|
xPathEntityProcessor.init(c);
|
||||||
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
|
||||||
|
@ -105,7 +125,7 @@ public class TestXPathEntityProcessor {
|
||||||
XPathEntityProcessor.USE_SOLR_ADD_SCHEMA, "true", "xsl", ""
|
XPathEntityProcessor.USE_SOLR_ADD_SCHEMA, "true", "xsl", ""
|
||||||
+ new File(tmpdir, "x.xsl").getAbsolutePath(), "url", "cd.xml");
|
+ new File(tmpdir, "x.xsl").getAbsolutePath(), "url", "cd.xml");
|
||||||
Context c = AbstractDataImportHandlerTest.getContext(null,
|
Context c = AbstractDataImportHandlerTest.getContext(null,
|
||||||
new VariableResolverImpl(), getds(), 0, null, entityAttrs);
|
new VariableResolverImpl(), getDataSource(cdData), 0, null, entityAttrs);
|
||||||
XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
|
XPathEntityProcessor xPathEntityProcessor = new XPathEntityProcessor();
|
||||||
xPathEntityProcessor.init(c);
|
xPathEntityProcessor.init(c);
|
||||||
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
|
||||||
|
@ -121,7 +141,7 @@ public class TestXPathEntityProcessor {
|
||||||
Assert.assertEquals("1982", result.get(2).get("year"));
|
Assert.assertEquals("1982", result.get(2).get("year"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DataSource<Reader> getds() {
|
private DataSource<Reader> getDataSource(final String xml) {
|
||||||
return new DataSource<Reader>() {
|
return new DataSource<Reader>() {
|
||||||
|
|
||||||
public void init(Context context, Properties initProps) {
|
public void init(Context context, Properties initProps) {
|
||||||
|
@ -131,7 +151,7 @@ public class TestXPathEntityProcessor {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Reader getData(String query) {
|
public Reader getData(String query) {
|
||||||
return new StringReader(cdData);
|
return new StringReader(xml);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -182,4 +202,6 @@ public class TestXPathEntityProcessor {
|
||||||
+ "\t\t<company>RCA</company>\n"
|
+ "\t\t<company>RCA</company>\n"
|
||||||
+ "\t\t<price>9.90</price>\n"
|
+ "\t\t<price>9.90</price>\n"
|
||||||
+ "\t\t<year>1982</year>\n" + "\t</cd>\n" + "</catalog>\t";
|
+ "\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>";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue