Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
0002314: dbimport of xml (XmlDataReader) does not handle xsi:nil corr…
…ectly
- Loading branch information
Showing
4 changed files
with
123 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
symmetric-io/src/test/java/org/jumpmind/symmetric/io/data/reader/TestableDataWriter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package org.jumpmind.symmetric.io.data.reader; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
import org.jumpmind.db.model.Table; | ||
import org.jumpmind.symmetric.io.data.Batch; | ||
import org.jumpmind.symmetric.io.data.CsvData; | ||
import org.jumpmind.symmetric.io.data.DataContext; | ||
import org.jumpmind.symmetric.io.data.IDataWriter; | ||
import org.jumpmind.util.Statistics; | ||
|
||
public class TestableDataWriter implements IDataWriter { | ||
|
||
List<CsvData> datas = new ArrayList<CsvData>(); | ||
|
||
Table lastTableRead; | ||
|
||
public List<CsvData> getDatas() { | ||
return datas; | ||
} | ||
|
||
public Table getLastTableRead() { | ||
return lastTableRead; | ||
} | ||
|
||
@Override | ||
public void open(DataContext context) { | ||
} | ||
|
||
@Override | ||
public void close() { | ||
} | ||
|
||
@Override | ||
public Map<Batch, Statistics> getStatistics() { | ||
return null; | ||
} | ||
|
||
@Override | ||
public void start(Batch batch) { | ||
} | ||
|
||
@Override | ||
public boolean start(Table table) { | ||
lastTableRead = table; | ||
return true; | ||
} | ||
|
||
@Override | ||
public void write(CsvData data) { | ||
datas.add(data); | ||
} | ||
|
||
@Override | ||
public void end(Table table) { | ||
} | ||
|
||
@Override | ||
public void end(Batch batch, boolean inError) { | ||
} | ||
|
||
} |
31 changes: 31 additions & 0 deletions
31
symmetric-io/src/test/java/org/jumpmind/symmetric/io/data/reader/XmlDataReaderTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package org.jumpmind.symmetric.io.data.reader; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
|
||
import java.util.List; | ||
import java.util.Map; | ||
|
||
import org.jumpmind.symmetric.io.data.CsvData; | ||
import org.jumpmind.symmetric.io.data.DataProcessor; | ||
import org.junit.Test; | ||
|
||
public class XmlDataReaderTest { | ||
|
||
@Test | ||
public void testNilDataElement() { | ||
XmlDataReader reader = new XmlDataReader(getClass().getResourceAsStream("xmldatareadertest1.xml")); | ||
TestableDataWriter writer = new TestableDataWriter(); | ||
DataProcessor processor = new DataProcessor(reader, writer, "test"); | ||
processor.process(); | ||
List<CsvData> dataRead = writer.getDatas(); | ||
assertEquals(4, dataRead.size()); | ||
Map<String, String> data1 = dataRead.get(1).toColumnNameValuePairs(writer.getLastTableRead().getColumnNames(), CsvData.ROW_DATA); | ||
assertEquals("1", data1.get("id")); | ||
assertEquals("A", data1.get("my_value")); | ||
|
||
Map<String, String> data2 = dataRead.get(2).toColumnNameValuePairs(writer.getLastTableRead().getColumnNames(), CsvData.ROW_DATA); | ||
assertEquals("2", data2.get("id")); | ||
assertEquals(null, data2.get("my_value")); | ||
|
||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
symmetric-io/src/test/resources/org/jumpmind/symmetric/io/data/reader/xmldatareadertest1.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<database> | ||
<table name="my_table"> | ||
<column name="id" primaryKey="true" required="true" type="INTEGER" size="10" /> | ||
<column name="my_value" type="VARCHAR" size="50" /> | ||
</table> | ||
<table_data name="my_table"> | ||
<row> | ||
<field name="id">1</field> | ||
<field name="my_value">A</field> | ||
</row> | ||
<row> | ||
<field name="id">2</field> | ||
<field name="my_value" xsi:nil="true" /> | ||
</row> | ||
<row> | ||
<field name="id">3</field> | ||
<field name="my_value">C</field> | ||
</row> | ||
</table_data> | ||
</database> |