Skip to content
This repository was archived by the owner on Mar 12, 2020. It is now read-only.

Commit 0f5de39

Browse files
author
Eric/Terry
committed
Fixed use of the XPath text() function which would truncate long text strings. Added a unit test to prove the point.
1 parent 7467bd0 commit 0f5de39

File tree

3 files changed

+60
-6
lines changed

3 files changed

+60
-6
lines changed

src/main/java/com/t11e/discovery/datatool/ConfigurationManager.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,9 @@ private GenericApplicationContext createApplicationContext(final InputStream is)
218218
final Class<Driver> clazz = loadDataSource(node.valueOf("@class"), node.valueOf("@jar"));
219219
final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(SimpleDriverDataSource.class);
220220
builder.addPropertyValue("driverClass", clazz);
221-
builder.addPropertyValue("url", node.valueOf("c:url/text()".replace("c:", ns)));
222-
addPropertyIfExists(builder, "username", node, "c:username/text()".replace("c:", ns));
223-
addPropertyIfExists(builder, "password", node, "c:password/text()".replace("c:", ns));
221+
builder.addPropertyValue("url", node.valueOf("c:url".replace("c:", ns)));
222+
addPropertyIfExists(builder, "username", node, "c:username".replace("c:", ns));
223+
addPropertyIfExists(builder, "password", node, "c:password".replace("c:", ns));
224224
{
225225
final Map<String, String> properties = new HashMap<String, String>();
226226
for (final Node child : (List<Node>) node.selectNodes("c:properties/*".replace("c:", ns)))
@@ -239,11 +239,11 @@ private GenericApplicationContext createApplicationContext(final InputStream is)
239239
{
240240
final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(SqlChangesetProfileService.class);
241241
builder.addPropertyReference("dataSource", "dataSource-" + node.valueOf("@dataSource"));
242-
builder.addPropertyValue("createSql", node.valueOf("c:createSql/text()".replace("c:", ns)));
242+
builder.addPropertyValue("createSql", node.valueOf("c:createSql".replace("c:", ns)));
243243
builder.addPropertyValue("retrieveStartColumn", node.valueOf("c:retrieveSql/@startColumn".replace("c:", ns)));
244244
builder.addPropertyValue("retrieveEndColumn", node.valueOf("c:retrieveSql/@endColumn".replace("c:", ns)));
245-
builder.addPropertyValue("retrieveSql", node.valueOf("c:retrieveSql/text()".replace("c:", ns)));
246-
builder.addPropertyValue("updateSql", node.valueOf("c:updateSql/text()".replace("c:", ns)));
245+
builder.addPropertyValue("retrieveSql", node.valueOf("c:retrieveSql".replace("c:", ns)));
246+
builder.addPropertyValue("updateSql", node.valueOf("c:updateSql".replace("c:", ns)));
247247
applicationContext.registerBeanDefinition("profile-" + node.valueOf("@name"), builder.getBeanDefinition());
248248
}
249249

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.t11e.discovery.datatool;
2+
3+
import org.dom4j.Document;
4+
import org.dom4j.DocumentException;
5+
import org.dom4j.io.SAXReader;
6+
import org.junit.Assert;
7+
import org.junit.Test;
8+
9+
public class Dom4JTest
10+
{
11+
@Test
12+
public void testCharacterReading()
13+
throws DocumentException
14+
{
15+
final SAXReader saxReader = new SAXReader();
16+
final Document doc =
17+
saxReader.read(getClass().getResourceAsStream("Dom4JTest.xml"));
18+
Assert.assertEquals(
19+
"abc",
20+
doc.valueOf("/test/one-line"));
21+
Assert.assertEquals(
22+
"\nabc\ndef",
23+
doc.valueOf("/test/two-lines"));
24+
Assert.assertEquals(
25+
"\nThere was a young rustic named Mallory,\n" +
26+
"who drew but a very small salary.\n" +
27+
"When he went to the show,\n" +
28+
"his purse made him go\n" +
29+
"to a seat in the uppermost gallery.\n" +
30+
"Tune, wont you come to Limerick.",
31+
doc.valueOf("/test/many-lines"));
32+
Assert.assertFalse(
33+
("\nThere was a young rustic named Mallory,\n" +
34+
"who drew but a very small salary.\n" +
35+
"When he went to the show,\n" +
36+
"his purse made him go\n" +
37+
"to a seat in the uppermost gallery.\n" +
38+
"Tune, wont you come to Limerick.")
39+
.equals(doc.valueOf("/test/many-lines/text()")));
40+
}
41+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<test>
2+
<one-line>abc</one-line>
3+
<two-lines>
4+
abc
5+
def</two-lines>
6+
<many-lines>
7+
There was a young rustic named Mallory,
8+
who drew but a very small salary.
9+
When he went to the show,
10+
his purse made him go
11+
to a seat in the uppermost gallery.
12+
Tune, wont you come to Limerick.</many-lines>
13+
</test>

0 commit comments

Comments
 (0)