Author: wspeirs
Date: Mon May 13 19:45:20 2013
New Revision: 1482047
URL: http://svn.apache.org/r1482047
Log:
Applied patch from DBUTILS-107 and updated changes.xml file
Modified:
commons/proper/dbutils/trunk/src/changes/changes.xml
commons/proper/dbutils/trunk/src/main/java/org/apache/commons/dbutils/QueryLoader.java
Modified: commons/proper/dbutils/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/dbutils/trunk/src/changes/changes.xml?rev=1482047&r1=1482046&r2=1482047&view=diff
==============================================================================
--- commons/proper/dbutils/trunk/src/changes/changes.xml (original)
+++ commons/proper/dbutils/trunk/src/changes/changes.xml Mon May 13 19:45:20
2013
@@ -47,6 +47,9 @@ The <action> type attribute can be add,u
<action dev="wspeirs" due-to="Micah Huff" type="add" issue="DBUTILS-108">
Create functionality to return auto-generated keys in batches of SQL
inserts
</action>
+ <action dev="wspeirs" due-to="PB" type="add" issue="DBUTILS-107">
+ Patch QueryLoader to also load from XML properties files
+ </action>
<action dev="simonetripodi" due-to="Moandji Ezana" type="add"
issue="DBUTILS-98">
Add missing JavaDoc to QueryRunner#insert
</action>
Modified:
commons/proper/dbutils/trunk/src/main/java/org/apache/commons/dbutils/QueryLoader.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbutils/trunk/src/main/java/org/apache/commons/dbutils/QueryLoader.java?rev=1482047&r1=1482046&r2=1482047&view=diff
==============================================================================
---
commons/proper/dbutils/trunk/src/main/java/org/apache/commons/dbutils/QueryLoader.java
(original)
+++
commons/proper/dbutils/trunk/src/main/java/org/apache/commons/dbutils/QueryLoader.java
Mon May 13 19:45:20 2013
@@ -19,8 +19,10 @@ package org.apache.commons.dbutils;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
+import java.util.InvalidPropertiesFormatException;
import java.util.Map;
import java.util.Properties;
+import java.util.regex.Pattern;
/**
* <code>QueryLoader</code> is a registry for sets of queries so
@@ -36,6 +38,11 @@ public class QueryLoader {
private static final QueryLoader instance = new QueryLoader();
/**
+ * Matches .xml file extensions.
+ */
+ private static final Pattern dotXml = Pattern.compile(".+\\.[xX][mM][lL]");
+
+ /**
* Return an instance of this class.
* @return The Singleton instance.
*/
@@ -58,7 +65,9 @@ public class QueryLoader {
/**
* Loads a Map of query names to SQL values. The Maps are cached so a
* subsequent request to load queries from the same path will return
- * the cached Map.
+ * the cached Map. The properties file to load can be in either
+ * line-oriented or XML format. XML formatted properties files must use a
+ * <code>.xml</code> file extension.
*
* @param path The path that the ClassLoader will use to find the file.
* This is <strong>not</strong> a file system path. If you had a jarred
@@ -67,7 +76,10 @@ public class QueryLoader {
* @throws IOException if a file access error occurs
* @throws IllegalArgumentException if the ClassLoader can't find a file at
* the given path.
+ * @throws InvalidPropertiesFormatException if the XML properties file is
+ * invalid
* @return Map of query names to SQL values
+ * @see java.util.Properties
*/
public synchronized Map<String, String> load(String path) throws
IOException {
@@ -83,13 +95,19 @@ public class QueryLoader {
/**
* Loads a set of named queries into a Map object. This implementation
- * reads a properties file at the given path.
+ * reads a properties file at the given path. The properties file can be
+ * in either line-oriented or XML format. XML formatted properties files
+ * must use a <code>.xml</code> file extension.
+
* @param path The path that the ClassLoader will use to find the file.
* @throws IOException if a file access error occurs
* @throws IllegalArgumentException if the ClassLoader can't find a file at
* the given path.
+ * @throws InvalidPropertiesFormatException if the XML properties file is
+ * invalid
* @since DbUtils 1.1
* @return Map of query names to SQL values
+ * @see java.util.Properties
*/
protected Map<String, String> loadQueries(String path) throws IOException {
// Findbugs flags getClass().getResource as a bad practice; maybe we
should change the API?
@@ -101,7 +119,11 @@ public class QueryLoader {
Properties props = new Properties();
try {
- props.load(in);
+ if (dotXml.matcher(path).matches()) {
+ props.loadFromXML(in);
+ } else {
+ props.load(in);
+ }
} finally {
in.close();
}