You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2017/10/10 22:43:06 UTC
commons-dbutils git commit: [DBUTILS-135] BeanProcessor is not thread
safe since [DBUTILS-124].
Repository: commons-dbutils
Updated Branches:
refs/heads/master ea94faec8 -> 0e6405a12
[DBUTILS-135] BeanProcessor is not thread safe since [DBUTILS-124].
Project: http://git-wip-us.apache.org/repos/asf/commons-dbutils/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-dbutils/commit/0e6405a1
Tree: http://git-wip-us.apache.org/repos/asf/commons-dbutils/tree/0e6405a1
Diff: http://git-wip-us.apache.org/repos/asf/commons-dbutils/diff/0e6405a1
Branch: refs/heads/master
Commit: 0e6405a12f74d6622e1d2e05bb649560da13669f
Parents: ea94fae
Author: hdevalke <no...@github.com>
Authored: Tue Oct 10 16:43:04 2017 -0600
Committer: Gary Gregory <gg...@apache.org>
Committed: Tue Oct 10 16:43:04 2017 -0600
----------------------------------------------------------------------
src/changes/changes.xml | 3 +++
.../apache/commons/dbutils/BeanProcessor.java | 24 ++++++++++----------
2 files changed, 15 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/0e6405a1/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 76d46bd..4d2283d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -74,6 +74,9 @@ The <action> type attribute can be add,update,fix,remove.
<action dev="thecarlhall" type="update" issue="PR/1" due-to="Michael Hausegger">
Created some Unit Tests to increase code coverage.
</action>
+ <action dev="ggregory" type="update" issue="DBUTILS-135" due-to="hdevalke">
+ BeanProcessor is not thread safe since [DBUTILS-124].
+ </action>
</release>
<release version="1.6" date="2014-07-20" description="Bugfixes and addition of insert methods">
http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/0e6405a1/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
index 74de18a..e18dc01 100644
--- a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
+++ b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
@@ -65,19 +65,9 @@ public class BeanProcessor {
*/
private static final Map<Class<?>, Object> primitiveDefaults = new HashMap<Class<?>, Object>();
- /**
- * ServiceLoader to find <code>ColumnHandler</code> implementations on the classpath. The iterator for this is
- * lazy and each time <code>iterator()</code> is called.
- */
- // FIXME: I think this instantiates new handlers on each iterator() call. This might be worth caching upfront.
- private static final ServiceLoader<ColumnHandler> columnHandlers = ServiceLoader.load(ColumnHandler.class);
+ private static final List<ColumnHandler> columnHandlers = new ArrayList<ColumnHandler>();
- /**
- * ServiceLoader to find <code>PropertyHandler</code> implementations on the classpath. The iterator for this is
- * lazy and each time <code>iterator()</code> is called.
- */
- // FIXME: I think this instantiates new handlers on each iterator() call. This might be worth caching upfront.
- private static final ServiceLoader<PropertyHandler> propertyHandlers = ServiceLoader.load(PropertyHandler.class);
+ private static final List<PropertyHandler> propertyHandlers = new ArrayList<PropertyHandler>();
/**
* ResultSet column to bean property name overrides.
@@ -93,6 +83,16 @@ public class BeanProcessor {
primitiveDefaults.put(Long.TYPE, Long.valueOf(0L));
primitiveDefaults.put(Boolean.TYPE, Boolean.FALSE);
primitiveDefaults.put(Character.TYPE, Character.valueOf((char) 0));
+
+ // Use a ServiceLoader to find implementations
+ for (ColumnHandler handler : ServiceLoader.load(ColumnHandler.class)) {
+ columnHandlers.add(handler);
+ }
+
+ // Use a ServiceLoader to find implementations
+ for (PropertyHandler handler : ServiceLoader.load(PropertyHandler.class)) {
+ propertyHandlers.add(handler);
+ }
}
/**