You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2013/03/17 22:29:20 UTC
svn commit: r1457567 [1/2] - in /commons/proper/dbutils/branches/2_0/src:
main/java/org/apache/commons/dbutils2/ test/java/org/apache/commons/dbutils2/
Author: sebb
Date: Sun Mar 17 21:29:20 2013
New Revision: 1457567
URL: http://svn.apache.org/r1457567
Log:
Add missing svn:eol-style properties
Modified:
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/AbstractExecutor.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/AbstractExecutorTest.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/BatchExecutorTest.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/GenerousBeanProcessorTest.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/InsertExecutorTest.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/QueryExecutorTest.java (contents, props changed)
commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/UpdateExecutorTest.java (contents, props changed)
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/AbstractExecutor.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/AbstractExecutor.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/AbstractExecutor.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/AbstractExecutor.java Sun Mar 17 21:29:20 2013
@@ -1,323 +1,323 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Abstract class for executing a query, insert, update, or batch.
- *
- * @since 2.0
- * @author William Speirs <ws...@apache.org>
- */
-abstract class AbstractExecutor<T extends AbstractExecutor<T>> {
-
- private static final String COLON = ":"; // TODO: change this to any character
-
- private final Connection conn;
- private final String sql;
- private final PreparedStatement stmt;
-
- private final Map<String, List<Integer>> paramPosMap;
- private final Map<String, Object> paramValueMap;
- private Integer currentPosition = Integer.valueOf(0);
-
- public AbstractExecutor(final Connection conn, final String sql) throws SQLException {
- this.conn = conn;
- this.sql = sql;
- this.paramPosMap = new HashMap<String, List<Integer>>();
- this.paramValueMap = new HashMap<String, Object>();
-
- final Pattern paramPattern = Pattern.compile("(:\\w+)");
- final Matcher matcher = paramPattern.matcher(sql);
-
- // go through finding params
- while (matcher.find()) {
- insertParamPosition(matcher.group().replace(COLON, ""));
- }
-
- // replace all of the :names with ?, and create a prepared statement
- stmt = conn.prepareStatement(sql.replaceAll(":\\w+", "\\?"));
- }
-
- /**
- * Helper method to insert params and the current position into the map.
- * @param param the SQL param.
- */
- private void insertParamPosition(final String param) {
- List<Integer> posList = paramPosMap.get(param);
-
- // create a new list if we need to
- if (posList == null) {
- posList = new ArrayList<Integer>();
- paramPosMap.put(param, posList);
- }
-
- // increment first, so we match SQL numbering
- posList.add(++currentPosition);
- }
-
- /**
- * Gets the SQL statement that was passed into the constructor.
- * @return the SQL statement passed into the constructor.
- */
- protected String getSql() {
- return sql;
- }
-
- /**
- * Returns the underlying prepared statement.
- * @return the underlying prepared statement.
- */
- protected PreparedStatement getStatement() {
- return stmt;
- }
-
- /**
- * Returns the underlying connection.
- * @return the underlying connection.
- */
- protected Connection getConnection() {
- return conn;
- }
-
- /**
- * Throws an exception if there are unmapped params.
- * @throws SQLException if there are unmapped params.
- */
- protected void throwIfUnmappedParams() throws SQLException {
- if (paramPosMap.size() != 0) {
- final Set<String> unmappedParams = paramPosMap.keySet();
- final StringBuilder sb = new StringBuilder("There are unbound parameters: ");
-
- for (String param:unmappedParams) {
- sb.append(param);
- sb.append(", ");
- }
-
- // remove the last comma
- sb.delete(sb.length() - 2, sb.length());
-
- // throw our exception
- throw new SQLException(sb.toString());
- }
- }
-
- /**
- * Binds a named parameter to a value.
- *
- * @param name the name of the parameter in the SQL statement.
- * @param value the value of the parameter in the SQL statement.
- * @return this execution object to provide the fluent style.
- * @throws SQLException thrown if the parameter is not found, already bound, or there is an issue binding it.
- */
- public T bind(final String name, final Object value) throws SQLException {
- return bind(name, value, true);
- }
-
- /**
- * Binds null to a parameter.
- * Types.VARCHAR is used as the type's parameter.
- * This usually works, but fails with some Oracle and MS SQL drivers.
- * @param name the name of the parameter.
- * @return this execution object to provide the fluent style.
- * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
- */
- public T bindNull(final String name) throws SQLException {
- return bindNull(name, Types.VARCHAR, true);
- }
-
- /**
- * Binds null to a parameter, specifying the parameter's type.
- * @param name the name of the parameter.
- * @param sqlType the type of the parameter.
- * @return this execution object to provide the fluent style.
- * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
- */
- public T bindNull(final String name, final int sqlType) throws SQLException {
- return bindNull(name, sqlType, true);
- }
-
- /**
- * Given a param name and sqlType, binds a null to that parameter.
- * @param name the name of the parameter.
- * @param sqlType the type of the parameter.
- * @param removeFromPosMap if the param should be removed from the pos map.
- * @return this
- * @throws SQLException if there is an SQLException during binding.
- */
- protected T bindNull(String name, int sqlType, boolean removeFromPosMap) throws SQLException {
- name = name.replace(COLON, ""); // so we can take ":name" or "name"
-
- final List<Integer> pos = removeFromPosMap ? paramPosMap.remove(name) : paramPosMap.get(name);
-
- if (pos == null) {
- throw new SQLException(name + " is not found in the SQL statement");
- }
-
- // go through and bind all of the positions for this name
- for (Integer p:pos) {
- stmt.setNull(p.intValue(), sqlType);
- }
-
- // add the param and value to our map
- paramValueMap.put(name, null);
-
- // suppressed because the casting will always work here
- @SuppressWarnings("unchecked")
- final T ret = (T) this;
-
- return ret;
- }
-
- /**
- * Binds value to name, but does not do the bookkeeping.
- * @param name the parameter name.
- * @param value the value.
- * @param removeFromPosMap if the param should be removed from the pos map.
- * @return this
- * @throws SQLException if there is an SQLException during binding.
- */
- protected T bind(String name, final Object value, boolean removeFromPosMap) throws SQLException {
- name = name.replace(COLON, ""); // so we can take ":name" or "name"
-
- final List<Integer> pos = removeFromPosMap ? paramPosMap.remove(name) : paramPosMap.get(name);
-
- if (pos == null) {
- throw new SQLException(name + " is not found in the SQL statement");
- }
-
- // go through and bind all of the positions for this name
- for (Integer p:pos) {
- // TODO: need to figure out how to bind NULL
- stmt.setObject(p.intValue(), value);
- }
-
- // add the param and value to our map
- paramValueMap.put(name, value);
-
- // suppressed because the casting will always work here
- @SuppressWarnings("unchecked")
- final T ret = (T) this;
-
- return ret;
- }
-
- /**
- * Used for batch calls so we can clear the map after the addBatch call.
- */
- protected void clearValueMap() {
- paramValueMap.clear();
- }
-
- /**
- * Throws a new exception with a more informative error message.
- *
- * @param cause The original exception that will be chained to the new
- * exception when it's rethrown.
- *
- * @throws SQLException if a database access error occurs
- */
- protected void rethrow(SQLException cause) throws SQLException {
- String causeMessage = cause.getMessage();
-
- if (causeMessage == null) {
- causeMessage = "";
- }
-
- final StringBuffer msg = new StringBuffer(causeMessage);
-
- msg.append(" Query: ");
- msg.append(sql);
- msg.append(" Parameters: ");
-
- // loop through adding the parameter to value mappings
- for (Map.Entry<String, Object> param:paramValueMap.entrySet()) {
- msg.append(param.getKey());
- msg.append("=");
- msg.append(param.getValue());
- msg.append(" ");
- }
-
- final SQLException e = new SQLException(msg.toString(), cause.getSQLState(), cause.getErrorCode());
- e.setNextException(cause);
-
- throw e;
- }
-
- /**
- * Wrap the <code>ResultSet</code> in a decorator before processing it. This
- * implementation returns the <code>ResultSet</code> it is given without any
- * decoration.
- *
- * @param rs The <code>ResultSet</code> to decorate; never <code>null</code>.
- * @return The <code>ResultSet</code> wrapped in some decorator.
- */
- protected ResultSet wrap(ResultSet rs) {
- return rs;
- }
-
- /**
- * Close a <code>Connection</code>. This implementation avoids closing if
- * null and does <strong>not</strong> suppress any exceptions. Subclasses
- * can override to provide special handling like logging.
- *
- * @param conn Connection to close
- * @throws SQLException if a database access error occurs
- */
- protected void close(Connection conn) throws SQLException {
- DbUtils.close(conn);
- }
-
- /**
- * Close a <code>Statement</code>. This implementation avoids closing if
- * null and does <strong>not</strong> suppress any exceptions. Subclasses
- * can override to provide special handling like logging.
- *
- * @param stmt Statement to close
- * @throws SQLException if a database access error occurs
- */
- protected void close(Statement stmt) throws SQLException {
- DbUtils.close(stmt);
- }
-
- /**
- * Close a <code>ResultSet</code>. This implementation avoids closing if
- * null and does <strong>not</strong> suppress any exceptions. Subclasses
- * can override to provide special handling like logging.
- *
- * @param rs ResultSet to close
- * @throws SQLException if a database access error occurs
- */
- protected void close(ResultSet rs) throws SQLException {
- DbUtils.close(rs);
- }
-
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Abstract class for executing a query, insert, update, or batch.
+ *
+ * @since 2.0
+ * @author William Speirs <ws...@apache.org>
+ */
+abstract class AbstractExecutor<T extends AbstractExecutor<T>> {
+
+ private static final String COLON = ":"; // TODO: change this to any character
+
+ private final Connection conn;
+ private final String sql;
+ private final PreparedStatement stmt;
+
+ private final Map<String, List<Integer>> paramPosMap;
+ private final Map<String, Object> paramValueMap;
+ private Integer currentPosition = Integer.valueOf(0);
+
+ public AbstractExecutor(final Connection conn, final String sql) throws SQLException {
+ this.conn = conn;
+ this.sql = sql;
+ this.paramPosMap = new HashMap<String, List<Integer>>();
+ this.paramValueMap = new HashMap<String, Object>();
+
+ final Pattern paramPattern = Pattern.compile("(:\\w+)");
+ final Matcher matcher = paramPattern.matcher(sql);
+
+ // go through finding params
+ while (matcher.find()) {
+ insertParamPosition(matcher.group().replace(COLON, ""));
+ }
+
+ // replace all of the :names with ?, and create a prepared statement
+ stmt = conn.prepareStatement(sql.replaceAll(":\\w+", "\\?"));
+ }
+
+ /**
+ * Helper method to insert params and the current position into the map.
+ * @param param the SQL param.
+ */
+ private void insertParamPosition(final String param) {
+ List<Integer> posList = paramPosMap.get(param);
+
+ // create a new list if we need to
+ if (posList == null) {
+ posList = new ArrayList<Integer>();
+ paramPosMap.put(param, posList);
+ }
+
+ // increment first, so we match SQL numbering
+ posList.add(++currentPosition);
+ }
+
+ /**
+ * Gets the SQL statement that was passed into the constructor.
+ * @return the SQL statement passed into the constructor.
+ */
+ protected String getSql() {
+ return sql;
+ }
+
+ /**
+ * Returns the underlying prepared statement.
+ * @return the underlying prepared statement.
+ */
+ protected PreparedStatement getStatement() {
+ return stmt;
+ }
+
+ /**
+ * Returns the underlying connection.
+ * @return the underlying connection.
+ */
+ protected Connection getConnection() {
+ return conn;
+ }
+
+ /**
+ * Throws an exception if there are unmapped params.
+ * @throws SQLException if there are unmapped params.
+ */
+ protected void throwIfUnmappedParams() throws SQLException {
+ if (paramPosMap.size() != 0) {
+ final Set<String> unmappedParams = paramPosMap.keySet();
+ final StringBuilder sb = new StringBuilder("There are unbound parameters: ");
+
+ for (String param:unmappedParams) {
+ sb.append(param);
+ sb.append(", ");
+ }
+
+ // remove the last comma
+ sb.delete(sb.length() - 2, sb.length());
+
+ // throw our exception
+ throw new SQLException(sb.toString());
+ }
+ }
+
+ /**
+ * Binds a named parameter to a value.
+ *
+ * @param name the name of the parameter in the SQL statement.
+ * @param value the value of the parameter in the SQL statement.
+ * @return this execution object to provide the fluent style.
+ * @throws SQLException thrown if the parameter is not found, already bound, or there is an issue binding it.
+ */
+ public T bind(final String name, final Object value) throws SQLException {
+ return bind(name, value, true);
+ }
+
+ /**
+ * Binds null to a parameter.
+ * Types.VARCHAR is used as the type's parameter.
+ * This usually works, but fails with some Oracle and MS SQL drivers.
+ * @param name the name of the parameter.
+ * @return this execution object to provide the fluent style.
+ * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
+ */
+ public T bindNull(final String name) throws SQLException {
+ return bindNull(name, Types.VARCHAR, true);
+ }
+
+ /**
+ * Binds null to a parameter, specifying the parameter's type.
+ * @param name the name of the parameter.
+ * @param sqlType the type of the parameter.
+ * @return this execution object to provide the fluent style.
+ * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
+ */
+ public T bindNull(final String name, final int sqlType) throws SQLException {
+ return bindNull(name, sqlType, true);
+ }
+
+ /**
+ * Given a param name and sqlType, binds a null to that parameter.
+ * @param name the name of the parameter.
+ * @param sqlType the type of the parameter.
+ * @param removeFromPosMap if the param should be removed from the pos map.
+ * @return this
+ * @throws SQLException if there is an SQLException during binding.
+ */
+ protected T bindNull(String name, int sqlType, boolean removeFromPosMap) throws SQLException {
+ name = name.replace(COLON, ""); // so we can take ":name" or "name"
+
+ final List<Integer> pos = removeFromPosMap ? paramPosMap.remove(name) : paramPosMap.get(name);
+
+ if (pos == null) {
+ throw new SQLException(name + " is not found in the SQL statement");
+ }
+
+ // go through and bind all of the positions for this name
+ for (Integer p:pos) {
+ stmt.setNull(p.intValue(), sqlType);
+ }
+
+ // add the param and value to our map
+ paramValueMap.put(name, null);
+
+ // suppressed because the casting will always work here
+ @SuppressWarnings("unchecked")
+ final T ret = (T) this;
+
+ return ret;
+ }
+
+ /**
+ * Binds value to name, but does not do the bookkeeping.
+ * @param name the parameter name.
+ * @param value the value.
+ * @param removeFromPosMap if the param should be removed from the pos map.
+ * @return this
+ * @throws SQLException if there is an SQLException during binding.
+ */
+ protected T bind(String name, final Object value, boolean removeFromPosMap) throws SQLException {
+ name = name.replace(COLON, ""); // so we can take ":name" or "name"
+
+ final List<Integer> pos = removeFromPosMap ? paramPosMap.remove(name) : paramPosMap.get(name);
+
+ if (pos == null) {
+ throw new SQLException(name + " is not found in the SQL statement");
+ }
+
+ // go through and bind all of the positions for this name
+ for (Integer p:pos) {
+ // TODO: need to figure out how to bind NULL
+ stmt.setObject(p.intValue(), value);
+ }
+
+ // add the param and value to our map
+ paramValueMap.put(name, value);
+
+ // suppressed because the casting will always work here
+ @SuppressWarnings("unchecked")
+ final T ret = (T) this;
+
+ return ret;
+ }
+
+ /**
+ * Used for batch calls so we can clear the map after the addBatch call.
+ */
+ protected void clearValueMap() {
+ paramValueMap.clear();
+ }
+
+ /**
+ * Throws a new exception with a more informative error message.
+ *
+ * @param cause The original exception that will be chained to the new
+ * exception when it's rethrown.
+ *
+ * @throws SQLException if a database access error occurs
+ */
+ protected void rethrow(SQLException cause) throws SQLException {
+ String causeMessage = cause.getMessage();
+
+ if (causeMessage == null) {
+ causeMessage = "";
+ }
+
+ final StringBuffer msg = new StringBuffer(causeMessage);
+
+ msg.append(" Query: ");
+ msg.append(sql);
+ msg.append(" Parameters: ");
+
+ // loop through adding the parameter to value mappings
+ for (Map.Entry<String, Object> param:paramValueMap.entrySet()) {
+ msg.append(param.getKey());
+ msg.append("=");
+ msg.append(param.getValue());
+ msg.append(" ");
+ }
+
+ final SQLException e = new SQLException(msg.toString(), cause.getSQLState(), cause.getErrorCode());
+ e.setNextException(cause);
+
+ throw e;
+ }
+
+ /**
+ * Wrap the <code>ResultSet</code> in a decorator before processing it. This
+ * implementation returns the <code>ResultSet</code> it is given without any
+ * decoration.
+ *
+ * @param rs The <code>ResultSet</code> to decorate; never <code>null</code>.
+ * @return The <code>ResultSet</code> wrapped in some decorator.
+ */
+ protected ResultSet wrap(ResultSet rs) {
+ return rs;
+ }
+
+ /**
+ * Close a <code>Connection</code>. This implementation avoids closing if
+ * null and does <strong>not</strong> suppress any exceptions. Subclasses
+ * can override to provide special handling like logging.
+ *
+ * @param conn Connection to close
+ * @throws SQLException if a database access error occurs
+ */
+ protected void close(Connection conn) throws SQLException {
+ DbUtils.close(conn);
+ }
+
+ /**
+ * Close a <code>Statement</code>. This implementation avoids closing if
+ * null and does <strong>not</strong> suppress any exceptions. Subclasses
+ * can override to provide special handling like logging.
+ *
+ * @param stmt Statement to close
+ * @throws SQLException if a database access error occurs
+ */
+ protected void close(Statement stmt) throws SQLException {
+ DbUtils.close(stmt);
+ }
+
+ /**
+ * Close a <code>ResultSet</code>. This implementation avoids closing if
+ * null and does <strong>not</strong> suppress any exceptions. Subclasses
+ * can override to provide special handling like logging.
+ *
+ * @param rs ResultSet to close
+ * @throws SQLException if a database access error occurs
+ */
+ protected void close(ResultSet rs) throws SQLException {
+ DbUtils.close(rs);
+ }
+
+
+}
Propchange: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/AbstractExecutor.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java Sun Mar 17 21:29:20 2013
@@ -1,124 +1,124 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Types;
-
-/**
- * This class provides the ability to execute a batch of statements.
- *
- * It is really just a facade to an array of UpdateExecutors.
- *
- * @since 2.0
- * @author William Speirs <ws...@apache.org>
- */
-public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
-
- private final boolean closeConn;
-
- /**
- * Constructs a BatchExecutor given a connection and SQL statement.
- * @param conn The connection to use during execution.
- * @param sql The SQL statement.
- * @param closeConnection If the connection should be closed or not.
- * @throws SQLException thrown if there is an error during execution.
- */
- BatchExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
- super(conn, sql);
- this.closeConn = closeConnection;
- }
-
- /**
- * Binds a parameter name to a value for a given statement.
- * @param name the name of the parameter.
- * @param value the value to bind to the parameter.
- * @return this object.
- * @throws SQLException thrown if the statement number does not exist, or any other SQLException.
- * @see org.apache.commons.dbutils2.UpdateExecutor#bind(String, Object)
- */
- @Override
- public BatchExecutor bind(final String name, final Object value) throws SQLException {
- return bind(name, value, false);
- }
-
- /**
- * Binds null to a parameter.
- * Types.VARCHAR is used as the type's parameter.
- * This usually works, but fails with some Oracle and MS SQL drivers.
- * @param name the name of the parameter.
- * @return this execution object to provide the fluent style.
- * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
- */
- @Override
- public BatchExecutor bindNull(final String name) throws SQLException {
- return bindNull(name, Types.VARCHAR, false);
- }
-
- /**
- * Binds null to a parameter, specifying the parameter's type.
- * @param name the name of the parameter.
- * @param sqlType the type of the parameter.
- * @return this execution object to provide the fluent style.
- * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
- */
- @Override
- public BatchExecutor bindNull(final String name, final int sqlType) throws SQLException {
- return bindNull(name, sqlType, false);
- }
-
- /**
- * Adds the statement to the batch after binding all of the parameters.
- * @return this object.
- * @throws SQLException if a SQLException is thrown during the addBatch() call.
- * @see java.sql.PreparedStatement#addBatch()
- */
- public BatchExecutor addBatch() throws SQLException {
- try {
- getStatement().addBatch();
- clearValueMap();
- } catch (SQLException e) {
- rethrow(e);
- }
-
- return this;
- }
-
- /**
- * Calls batch after checking the parameters to ensure nothing is null.
- * @return an array containing the number of rows updated for each statement.
- * @throws SQLException If there are database or parameter errors.
- * @see org.apache.commons.dbutils2.UpdateExecutor#execute()
- */
- public int[] execute() throws SQLException {
- try {
- return getStatement().executeBatch();
- } catch (SQLException e) {
- rethrow(e);
- } finally {
- close(getStatement());
- if (closeConn) {
- close(getConnection());
- }
- }
-
- // we get here only if something is thrown
- return null;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+
+/**
+ * This class provides the ability to execute a batch of statements.
+ *
+ * It is really just a facade to an array of UpdateExecutors.
+ *
+ * @since 2.0
+ * @author William Speirs <ws...@apache.org>
+ */
+public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
+
+ private final boolean closeConn;
+
+ /**
+ * Constructs a BatchExecutor given a connection and SQL statement.
+ * @param conn The connection to use during execution.
+ * @param sql The SQL statement.
+ * @param closeConnection If the connection should be closed or not.
+ * @throws SQLException thrown if there is an error during execution.
+ */
+ BatchExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+ super(conn, sql);
+ this.closeConn = closeConnection;
+ }
+
+ /**
+ * Binds a parameter name to a value for a given statement.
+ * @param name the name of the parameter.
+ * @param value the value to bind to the parameter.
+ * @return this object.
+ * @throws SQLException thrown if the statement number does not exist, or any other SQLException.
+ * @see org.apache.commons.dbutils2.UpdateExecutor#bind(String, Object)
+ */
+ @Override
+ public BatchExecutor bind(final String name, final Object value) throws SQLException {
+ return bind(name, value, false);
+ }
+
+ /**
+ * Binds null to a parameter.
+ * Types.VARCHAR is used as the type's parameter.
+ * This usually works, but fails with some Oracle and MS SQL drivers.
+ * @param name the name of the parameter.
+ * @return this execution object to provide the fluent style.
+ * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
+ */
+ @Override
+ public BatchExecutor bindNull(final String name) throws SQLException {
+ return bindNull(name, Types.VARCHAR, false);
+ }
+
+ /**
+ * Binds null to a parameter, specifying the parameter's type.
+ * @param name the name of the parameter.
+ * @param sqlType the type of the parameter.
+ * @return this execution object to provide the fluent style.
+ * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
+ */
+ @Override
+ public BatchExecutor bindNull(final String name, final int sqlType) throws SQLException {
+ return bindNull(name, sqlType, false);
+ }
+
+ /**
+ * Adds the statement to the batch after binding all of the parameters.
+ * @return this object.
+ * @throws SQLException if a SQLException is thrown during the addBatch() call.
+ * @see java.sql.PreparedStatement#addBatch()
+ */
+ public BatchExecutor addBatch() throws SQLException {
+ try {
+ getStatement().addBatch();
+ clearValueMap();
+ } catch (SQLException e) {
+ rethrow(e);
+ }
+
+ return this;
+ }
+
+ /**
+ * Calls batch after checking the parameters to ensure nothing is null.
+ * @return an array containing the number of rows updated for each statement.
+ * @throws SQLException If there are database or parameter errors.
+ * @see org.apache.commons.dbutils2.UpdateExecutor#execute()
+ */
+ public int[] execute() throws SQLException {
+ try {
+ return getStatement().executeBatch();
+ } catch (SQLException e) {
+ rethrow(e);
+ } finally {
+ close(getStatement());
+ if (closeConn) {
+ close(getConnection());
+ }
+ }
+
+ // we get here only if something is thrown
+ return null;
+ }
+
+}
Propchange: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java Sun Mar 17 21:29:20 2013
@@ -1,71 +1,71 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-
-import java.beans.PropertyDescriptor;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.Arrays;
-
-
-/**
- * Provides generous name matching (e.g. underscore-aware) from DB
- * columns to Java Bean properties.
- */
-public class GenerousBeanProcessor extends BeanProcessor {
-
- /**
- * Default constructor.
- */
- public GenerousBeanProcessor() {
- super();
- }
-
- @Override
- protected int[] mapColumnsToProperties(final ResultSetMetaData rsmd,
- final PropertyDescriptor[] props) throws SQLException {
-
- final int cols = rsmd.getColumnCount();
- final int[] columnToProperty = new int[cols + 1];
- Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);
-
- for (int col = 1; col <= cols; col++) {
- String columnName = rsmd.getColumnLabel(col);
-
- if (null == columnName || 0 == columnName.length()) {
- columnName = rsmd.getColumnName(col);
- }
-
- final String generousColumnName = columnName.replace("_", "");
-
- for (int i = 0; i < props.length; i++) {
- final String propName = props[i].getName();
-
- // see if either the column name, or the generous one matches
- if (columnName.equalsIgnoreCase(propName) ||
- generousColumnName.equalsIgnoreCase(propName)) {
- columnToProperty[col] = i;
- break;
- }
- }
- }
-
- return columnToProperty;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+
+import java.beans.PropertyDescriptor;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.Arrays;
+
+
+/**
+ * Provides generous name matching (e.g. underscore-aware) from DB
+ * columns to Java Bean properties.
+ */
+public class GenerousBeanProcessor extends BeanProcessor {
+
+ /**
+ * Default constructor.
+ */
+ public GenerousBeanProcessor() {
+ super();
+ }
+
+ @Override
+ protected int[] mapColumnsToProperties(final ResultSetMetaData rsmd,
+ final PropertyDescriptor[] props) throws SQLException {
+
+ final int cols = rsmd.getColumnCount();
+ final int[] columnToProperty = new int[cols + 1];
+ Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);
+
+ for (int col = 1; col <= cols; col++) {
+ String columnName = rsmd.getColumnLabel(col);
+
+ if (null == columnName || 0 == columnName.length()) {
+ columnName = rsmd.getColumnName(col);
+ }
+
+ final String generousColumnName = columnName.replace("_", "");
+
+ for (int i = 0; i < props.length; i++) {
+ final String propName = props[i].getName();
+
+ // see if either the column name, or the generous one matches
+ if (columnName.equalsIgnoreCase(propName) ||
+ generousColumnName.equalsIgnoreCase(propName)) {
+ columnToProperty[col] = i;
+ break;
+ }
+ }
+ }
+
+ return columnToProperty;
+ }
+
+}
Propchange: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java Sun Mar 17 21:29:20 2013
@@ -1,114 +1,114 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-
-/**
- * Fluent class for executing inserts.
- *
- * @since 2.0
- * @author William Speirs <ws...@apache.org>
- */
-public class InsertExecutor extends AbstractExecutor<InsertExecutor> {
-
- private final boolean closeConn;
-
- /**
- * Constructs an InsertExecutor given a connection and SQL statement.
- * @param conn The connection to use during execution.
- * @param sql The SQL statement.
- * @param closeConnection If the connection should be closed or not.
- * @throws SQLException thrown if there is an error during execution.
- */
- InsertExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
- super(conn, sql);
- this.closeConn = closeConnection;
- }
-
- /**
- * Executes the given INSERT SQL statement.
- *
- * @param <T> the type returned by the ResultSetHandler.
- * @param handler The handler used to create the result object from
- * the <code>ResultSet</code> of auto-generated keys.
- *
- * @return An object generated by the handler.
- * @throws SQLException If there are database or parameter errors.
- */
- public <T> T execute(ResultSetHandler<T> handler) throws SQLException {
- // throw an exception if there are unmapped parameters
- this.throwIfUnmappedParams();
-
- // make sure our handler is not null
- if (handler == null) {
- if (closeConn) {
- close(getConnection());
- }
- throw new SQLException("Null ResultSetHandler");
- }
-
- try {
- // execute the update
- getStatement().executeUpdate();
-
- // get the result set
- final ResultSet resultSet = getStatement().getGeneratedKeys();
-
- // run the handler over the results and return them
- return handler.handle(resultSet);
- } catch (SQLException e) {
- this.rethrow(e);
- } finally {
- close(getStatement());
- if (closeConn) {
- close(getConnection());
- }
- }
-
- // we get here only if something is thrown
- return null;
- }
-
- /**
- * Executes the given INSERT SQL statement.
- * @return the number of rows updated.
- * @throws SQLException If there are database or parameter errors.
- */
- public int execute() throws SQLException {
- // throw an exception if there are unmapped parameters
- this.throwIfUnmappedParams();
-
- try {
- // execute the insert
- return getStatement().executeUpdate();
- } catch (SQLException e) {
- this.rethrow(e);
- } finally {
- close(getStatement());
- if (closeConn) {
- close(getConnection());
- }
- }
-
- return 0; // only get here on an error
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+
+/**
+ * Fluent class for executing inserts.
+ *
+ * @since 2.0
+ * @author William Speirs <ws...@apache.org>
+ */
+public class InsertExecutor extends AbstractExecutor<InsertExecutor> {
+
+ private final boolean closeConn;
+
+ /**
+ * Constructs an InsertExecutor given a connection and SQL statement.
+ * @param conn The connection to use during execution.
+ * @param sql The SQL statement.
+ * @param closeConnection If the connection should be closed or not.
+ * @throws SQLException thrown if there is an error during execution.
+ */
+ InsertExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+ super(conn, sql);
+ this.closeConn = closeConnection;
+ }
+
+ /**
+ * Executes the given INSERT SQL statement.
+ *
+ * @param <T> the type returned by the ResultSetHandler.
+ * @param handler The handler used to create the result object from
+ * the <code>ResultSet</code> of auto-generated keys.
+ *
+ * @return An object generated by the handler.
+ * @throws SQLException If there are database or parameter errors.
+ */
+ public <T> T execute(ResultSetHandler<T> handler) throws SQLException {
+ // throw an exception if there are unmapped parameters
+ this.throwIfUnmappedParams();
+
+ // make sure our handler is not null
+ if (handler == null) {
+ if (closeConn) {
+ close(getConnection());
+ }
+ throw new SQLException("Null ResultSetHandler");
+ }
+
+ try {
+ // execute the update
+ getStatement().executeUpdate();
+
+ // get the result set
+ final ResultSet resultSet = getStatement().getGeneratedKeys();
+
+ // run the handler over the results and return them
+ return handler.handle(resultSet);
+ } catch (SQLException e) {
+ this.rethrow(e);
+ } finally {
+ close(getStatement());
+ if (closeConn) {
+ close(getConnection());
+ }
+ }
+
+ // we get here only if something is thrown
+ return null;
+ }
+
+ /**
+ * Executes the given INSERT SQL statement.
+ * @return the number of rows updated.
+ * @throws SQLException If there are database or parameter errors.
+ */
+ public int execute() throws SQLException {
+ // throw an exception if there are unmapped parameters
+ this.throwIfUnmappedParams();
+
+ try {
+ // execute the insert
+ return getStatement().executeUpdate();
+ } catch (SQLException e) {
+ this.rethrow(e);
+ } finally {
+ close(getStatement());
+ if (closeConn) {
+ close(getConnection());
+ }
+ }
+
+ return 0; // only get here on an error
+ }
+
+}
Propchange: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java Sun Mar 17 21:29:20 2013
@@ -1,89 +1,89 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-/**
- * Fluent class for executing a query.
- *
- * @since 2.0
- * @author William Speirs <ws...@apache.org>
- */
-class QueryExecutor extends AbstractExecutor<QueryExecutor> {
-
- private final boolean closeConn;
-
- /**
- * Constructs a QueryExecutor given a connection and SQL statement.
- * @param conn The connection to use during execution.
- * @param sql The SQL statement.
- * @param closeConnection If the connection should be closed or not.
- * @throws SQLException thrown if there is an error during execution.
- */
- QueryExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
- super(conn, sql);
- this.closeConn = closeConnection;
- }
-
- /**
- * Calls query after checking the parameters to ensure nothing is null.
- *
- * @param handler The handler that converts the results into an object.
- *
- * @return The results of the query.
- * @throws SQLException If there are database or parameter errors.
- */
- public <T> T execute(ResultSetHandler<T> handler) throws SQLException {
- // throw an exception if there are unmapped parameters
- this.throwIfUnmappedParams();
-
- // make sure our handler is not null
- if (handler == null) {
- if (closeConn) {
- close(getConnection());
- }
- throw new SQLException("Null ResultSetHandler");
- }
-
- ResultSet resultSet = null;
-
- try {
- // execute the query, wrapping it
- resultSet = this.wrap(getStatement().executeQuery());
- // execute the handler
- return handler.handle(resultSet);
- } catch (SQLException e) {
- // rethrow our exception printing more information
- this.rethrow(e);
- } finally {
- try {
- close(resultSet);
- } finally {
- close(getStatement());
- if (closeConn) {
- close(getConnection());
- }
- }
- }
-
- // we get here only if something is thrown
- return null;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * Fluent class for executing a query.
+ *
+ * @since 2.0
+ * @author William Speirs <ws...@apache.org>
+ */
+class QueryExecutor extends AbstractExecutor<QueryExecutor> {
+
+ private final boolean closeConn;
+
+ /**
+ * Constructs a QueryExecutor given a connection and SQL statement.
+ * @param conn The connection to use during execution.
+ * @param sql The SQL statement.
+ * @param closeConnection If the connection should be closed or not.
+ * @throws SQLException thrown if there is an error during execution.
+ */
+ QueryExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+ super(conn, sql);
+ this.closeConn = closeConnection;
+ }
+
+ /**
+ * Calls query after checking the parameters to ensure nothing is null.
+ *
+ * @param handler The handler that converts the results into an object.
+ *
+ * @return The results of the query.
+ * @throws SQLException If there are database or parameter errors.
+ */
+ public <T> T execute(ResultSetHandler<T> handler) throws SQLException {
+ // throw an exception if there are unmapped parameters
+ this.throwIfUnmappedParams();
+
+ // make sure our handler is not null
+ if (handler == null) {
+ if (closeConn) {
+ close(getConnection());
+ }
+ throw new SQLException("Null ResultSetHandler");
+ }
+
+ ResultSet resultSet = null;
+
+ try {
+ // execute the query, wrapping it
+ resultSet = this.wrap(getStatement().executeQuery());
+ // execute the handler
+ return handler.handle(resultSet);
+ } catch (SQLException e) {
+ // rethrow our exception printing more information
+ this.rethrow(e);
+ } finally {
+ try {
+ close(resultSet);
+ } finally {
+ close(getStatement());
+ if (closeConn) {
+ close(getConnection());
+ }
+ }
+ }
+
+ // we get here only if something is thrown
+ return null;
+ }
+}
Propchange: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java Sun Mar 17 21:29:20 2013
@@ -1,69 +1,69 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-
-/**
- * Fluent class for executing updates.
- *
- * @since 2.0
- * @author William Speirs <ws...@apache.org>
- */
-public class UpdateExecutor extends AbstractExecutor<UpdateExecutor> {
-
- private final boolean closeConn;
-
- /**
- * Constructs an UpdateExecutor given a connection and SQL statement.
- * @param conn The connection to use during execution.
- * @param sql The SQL statement.
- * @param closeConnection If the connection should be closed or not.
- * @throws SQLException thrown if there is an error during execution.
- */
- UpdateExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
- super(conn, sql);
- this.closeConn = closeConnection;
- }
-
- /**
- * Calls update after checking the parameters to ensure nothing is null.
- * @return The number of rows updated.
- * @throws SQLException If there are database or parameter errors.
- */
- public int execute() throws SQLException {
- // throw an exception if there are unmapped parameters
- this.throwIfUnmappedParams();
-
- try {
- return getStatement().executeUpdate();
- } catch (SQLException e) {
- this.rethrow(e);
-
- } finally {
- close(getStatement());
- if (closeConn) {
- close(getConnection());
- }
- }
-
- // we get here only if something is thrown
- return 0;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * Fluent class for executing updates.
+ *
+ * @since 2.0
+ * @author William Speirs <ws...@apache.org>
+ */
+public class UpdateExecutor extends AbstractExecutor<UpdateExecutor> {
+
+ private final boolean closeConn;
+
+ /**
+ * Constructs an UpdateExecutor given a connection and SQL statement.
+ * @param conn The connection to use during execution.
+ * @param sql The SQL statement.
+ * @param closeConnection If the connection should be closed or not.
+ * @throws SQLException thrown if there is an error during execution.
+ */
+ UpdateExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+ super(conn, sql);
+ this.closeConn = closeConnection;
+ }
+
+ /**
+ * Calls update after checking the parameters to ensure nothing is null.
+ * @return The number of rows updated.
+ * @throws SQLException If there are database or parameter errors.
+ */
+ public int execute() throws SQLException {
+ // throw an exception if there are unmapped parameters
+ this.throwIfUnmappedParams();
+
+ try {
+ return getStatement().executeUpdate();
+ } catch (SQLException e) {
+ this.rethrow(e);
+
+ } finally {
+ close(getStatement());
+ if (closeConn) {
+ close(getConnection());
+ }
+ }
+
+ // we get here only if something is thrown
+ return 0;
+ }
+
+}
Propchange: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/AbstractExecutorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/AbstractExecutorTest.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/AbstractExecutorTest.java (original)
+++ commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/AbstractExecutorTest.java Sun Mar 17 21:29:20 2013
@@ -1,125 +1,125 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.sql.Types;
-
-import org.apache.commons.dbutils2.AbstractExecutor;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-
-public class AbstractExecutorTest {
-
- @SuppressWarnings("rawtypes") // don't care about this in the unit test
- private AbstractExecutor executor;
-
- @Mock private Connection conn;
- @Mock private PreparedStatement stmt;
-
- @Before
- public void setup() throws SQLException {
- MockitoAnnotations.initMocks(this);
-
- when(conn.prepareStatement(any(String.class))).thenReturn(stmt);
- }
-
- @SuppressWarnings("rawtypes")
- public void createExecutor(String sql) throws SQLException {
- executor = new AbstractExecutor(conn, sql) { };
- }
-
- @Test
- public void testGoodSql() throws SQLException {
- createExecutor("select * from blah :first = first and :last=last and phone=:phone");
-
- verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last and phone=?");
-
- executor.bind("first", "first_name")
- .bind(":last", "last_name")
- .bind("phone", Integer.valueOf(12345));
-
- verify(stmt, times(1)).setObject(1, "first_name");
- verify(stmt, times(1)).setObject(2, "last_name");
- verify(stmt, times(1)).setObject(eq(3), eq(Integer.valueOf(12345)));
-
- executor.throwIfUnmappedParams();
- }
-
- @SuppressWarnings("boxing") // test code
- @Test
- public void testNoParamsSql() throws SQLException {
- createExecutor("select * from blah");
-
- verify(conn, times(1)).prepareStatement("select * from blah");
- verify(stmt, times(0)).setObject(any(Integer.class), any(Object.class));
-
- executor.throwIfUnmappedParams();
- }
-
- @Test(expected=SQLException.class)
- public void testMissingParamSql() throws SQLException {
- createExecutor("select * from blah :first = first and :last=last");
-
- verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last");
-
- executor.bind("first", "first_name")
- .bind(":last", "last_name")
- .bind("phone", Integer.valueOf(12345)); // should throw
-
- verify(stmt, times(1)).setObject(1, "first_name");
- verify(stmt, times(1)).setObject(2, "last_name");
- verify(stmt, times(1)).setObject(eq(3), eq(Integer.valueOf(12345)));
- }
-
- @Test(expected=SQLException.class)
- public void testDoubleBind() throws SQLException {
- createExecutor("select * from blah :first = first and :last=last");
-
- verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last");
-
- executor.bind("first", "first_name")
- .bind(":last", "last_name")
- .bind(":last", "last_name");
-
- verify(stmt, times(1)).setObject(1, "first_name");
- verify(stmt, times(1)).setObject(2, "last_name");
- }
-
- @Test
- public void testNullBind() throws SQLException {
- createExecutor("select * from blah :first = first and :last=last");
-
- verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last");
-
- executor.bindNull("first")
- .bindNull(":last", Types.NULL);
-
- verify(stmt, times(1)).setNull(1, Types.VARCHAR);
- verify(stmt, times(1)).setNull(2, Types.NULL);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Types;
+
+import org.apache.commons.dbutils2.AbstractExecutor;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+
+public class AbstractExecutorTest {
+
+ @SuppressWarnings("rawtypes") // don't care about this in the unit test
+ private AbstractExecutor executor;
+
+ @Mock private Connection conn;
+ @Mock private PreparedStatement stmt;
+
+ @Before
+ public void setup() throws SQLException {
+ MockitoAnnotations.initMocks(this);
+
+ when(conn.prepareStatement(any(String.class))).thenReturn(stmt);
+ }
+
+ @SuppressWarnings("rawtypes")
+ public void createExecutor(String sql) throws SQLException {
+ executor = new AbstractExecutor(conn, sql) { };
+ }
+
+ @Test
+ public void testGoodSql() throws SQLException {
+ createExecutor("select * from blah :first = first and :last=last and phone=:phone");
+
+ verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last and phone=?");
+
+ executor.bind("first", "first_name")
+ .bind(":last", "last_name")
+ .bind("phone", Integer.valueOf(12345));
+
+ verify(stmt, times(1)).setObject(1, "first_name");
+ verify(stmt, times(1)).setObject(2, "last_name");
+ verify(stmt, times(1)).setObject(eq(3), eq(Integer.valueOf(12345)));
+
+ executor.throwIfUnmappedParams();
+ }
+
+ @SuppressWarnings("boxing") // test code
+ @Test
+ public void testNoParamsSql() throws SQLException {
+ createExecutor("select * from blah");
+
+ verify(conn, times(1)).prepareStatement("select * from blah");
+ verify(stmt, times(0)).setObject(any(Integer.class), any(Object.class));
+
+ executor.throwIfUnmappedParams();
+ }
+
+ @Test(expected=SQLException.class)
+ public void testMissingParamSql() throws SQLException {
+ createExecutor("select * from blah :first = first and :last=last");
+
+ verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last");
+
+ executor.bind("first", "first_name")
+ .bind(":last", "last_name")
+ .bind("phone", Integer.valueOf(12345)); // should throw
+
+ verify(stmt, times(1)).setObject(1, "first_name");
+ verify(stmt, times(1)).setObject(2, "last_name");
+ verify(stmt, times(1)).setObject(eq(3), eq(Integer.valueOf(12345)));
+ }
+
+ @Test(expected=SQLException.class)
+ public void testDoubleBind() throws SQLException {
+ createExecutor("select * from blah :first = first and :last=last");
+
+ verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last");
+
+ executor.bind("first", "first_name")
+ .bind(":last", "last_name")
+ .bind(":last", "last_name");
+
+ verify(stmt, times(1)).setObject(1, "first_name");
+ verify(stmt, times(1)).setObject(2, "last_name");
+ }
+
+ @Test
+ public void testNullBind() throws SQLException {
+ createExecutor("select * from blah :first = first and :last=last");
+
+ verify(conn, times(1)).prepareStatement("select * from blah ? = first and ?=last");
+
+ executor.bindNull("first")
+ .bindNull(":last", Types.NULL);
+
+ verify(stmt, times(1)).setNull(1, Types.VARCHAR);
+ verify(stmt, times(1)).setNull(2, Types.NULL);
+ }
+}
Propchange: commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/AbstractExecutorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/BatchExecutorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/BatchExecutorTest.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/BatchExecutorTest.java (original)
+++ commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/BatchExecutorTest.java Sun Mar 17 21:29:20 2013
@@ -1,69 +1,69 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import static org.junit.Assert.*;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-import org.apache.commons.dbutils2.BatchExecutor;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-
-public class BatchExecutorTest {
-
- private BatchExecutor executor;
-
- @Mock private Connection conn;
- @Mock private PreparedStatement stmt;
-
- @Before
- public void setup() throws SQLException {
- MockitoAnnotations.initMocks(this);
-
- when(conn.prepareStatement(any(String.class))).thenReturn(stmt);
- when(stmt.executeBatch()).thenReturn(new int[] { 2, 3, 4 });
- }
-
- protected void createExecutor(String sql) throws Exception {
- executor = new BatchExecutor(conn, sql, true);
- }
-
- @Test
- public void testGoodSQL() throws Exception {
- createExecutor("insert into blah");
-
- executor.addBatch();
- int[] ret = executor.execute();
-
- assertEquals(3, ret.length);
- assertEquals(2, ret[0]);
- assertEquals(3, ret[1]);
- assertEquals(4, ret[2]);
- verify(conn, times(1)).close();
- verify(stmt, times(1)).close();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+import org.apache.commons.dbutils2.BatchExecutor;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+
+public class BatchExecutorTest {
+
+ private BatchExecutor executor;
+
+ @Mock private Connection conn;
+ @Mock private PreparedStatement stmt;
+
+ @Before
+ public void setup() throws SQLException {
+ MockitoAnnotations.initMocks(this);
+
+ when(conn.prepareStatement(any(String.class))).thenReturn(stmt);
+ when(stmt.executeBatch()).thenReturn(new int[] { 2, 3, 4 });
+ }
+
+ protected void createExecutor(String sql) throws Exception {
+ executor = new BatchExecutor(conn, sql, true);
+ }
+
+ @Test
+ public void testGoodSQL() throws Exception {
+ createExecutor("insert into blah");
+
+ executor.addBatch();
+ int[] ret = executor.execute();
+
+ assertEquals(3, ret.length);
+ assertEquals(2, ret[0]);
+ assertEquals(3, ret[1]);
+ assertEquals(4, ret[2]);
+ verify(conn, times(1)).close();
+ verify(stmt, times(1)).close();
+ }
+
+}
Propchange: commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/BatchExecutorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/GenerousBeanProcessorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/GenerousBeanProcessorTest.java?rev=1457567&r1=1457566&r2=1457567&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/GenerousBeanProcessorTest.java (original)
+++ commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/GenerousBeanProcessorTest.java Sun Mar 17 21:29:20 2013
@@ -1,116 +1,116 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils2;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.when;
-import java.beans.PropertyDescriptor;
-import java.sql.ResultSetMetaData;
-
-import org.apache.commons.dbutils2.GenerousBeanProcessor;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-
-@SuppressWarnings("boxing") // test code
-public class GenerousBeanProcessorTest {
-
- GenerousBeanProcessor processor = new GenerousBeanProcessor();
- @Mock ResultSetMetaData metaData;
- PropertyDescriptor[] propDescriptors;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
-
- propDescriptors = new PropertyDescriptor[3];
-
- propDescriptors[0] = new PropertyDescriptor("one", TestBean.class);
- propDescriptors[1] = new PropertyDescriptor("two", TestBean.class);
- propDescriptors[2] = new PropertyDescriptor("three", TestBean.class);
- }
-
- @Test
- public void testMapColumnsToPropertiesWithOutUnderscores() throws Exception {
- when(metaData.getColumnCount()).thenReturn(3);
-
- when(metaData.getColumnLabel(1)).thenReturn("three");
- when(metaData.getColumnLabel(2)).thenReturn("one");
- when(metaData.getColumnLabel(3)).thenReturn("two");
-
- int[] ret = processor.mapColumnsToProperties(metaData, propDescriptors);
-
- assertNotNull(ret);
- assertEquals(4, ret.length);
- assertEquals(-1, ret[0]);
- assertEquals(2, ret[1]);
- assertEquals(0, ret[2]);
- assertEquals(1, ret[3]);
- }
-
- @Test
- public void testMapColumnsToPropertiesWithUnderscores() throws Exception {
- when(metaData.getColumnCount()).thenReturn(3);
-
- when(metaData.getColumnLabel(1)).thenReturn("t_h_r_e_e");
- when(metaData.getColumnLabel(2)).thenReturn("o_n_e");
- when(metaData.getColumnLabel(3)).thenReturn("t_w_o");
-
- int[] ret = processor.mapColumnsToProperties(metaData, propDescriptors);
-
- assertNotNull(ret);
- assertEquals(4, ret.length);
- assertEquals(-1, ret[0]);
- assertEquals(2, ret[1]);
- assertEquals(0, ret[2]);
- assertEquals(1, ret[3]);
- }
-
- static class TestBean {
- private String one;
- private int two;
- private long three;
-
- public String getOne() {
- return one;
- }
-
- public void setOne(String one) {
- this.one = one;
- }
-
- public int getTwo() {
- return two;
- }
-
- public void setTwo(int two) {
- this.two = two;
- }
-
- public long getThree() {
- return three;
- }
-
- public void setThree(long three) {
- this.three = three;
- }
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbutils2;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.when;
+import java.beans.PropertyDescriptor;
+import java.sql.ResultSetMetaData;
+
+import org.apache.commons.dbutils2.GenerousBeanProcessor;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+
+@SuppressWarnings("boxing") // test code
+public class GenerousBeanProcessorTest {
+
+ GenerousBeanProcessor processor = new GenerousBeanProcessor();
+ @Mock ResultSetMetaData metaData;
+ PropertyDescriptor[] propDescriptors;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ propDescriptors = new PropertyDescriptor[3];
+
+ propDescriptors[0] = new PropertyDescriptor("one", TestBean.class);
+ propDescriptors[1] = new PropertyDescriptor("two", TestBean.class);
+ propDescriptors[2] = new PropertyDescriptor("three", TestBean.class);
+ }
+
+ @Test
+ public void testMapColumnsToPropertiesWithOutUnderscores() throws Exception {
+ when(metaData.getColumnCount()).thenReturn(3);
+
+ when(metaData.getColumnLabel(1)).thenReturn("three");
+ when(metaData.getColumnLabel(2)).thenReturn("one");
+ when(metaData.getColumnLabel(3)).thenReturn("two");
+
+ int[] ret = processor.mapColumnsToProperties(metaData, propDescriptors);
+
+ assertNotNull(ret);
+ assertEquals(4, ret.length);
+ assertEquals(-1, ret[0]);
+ assertEquals(2, ret[1]);
+ assertEquals(0, ret[2]);
+ assertEquals(1, ret[3]);
+ }
+
+ @Test
+ public void testMapColumnsToPropertiesWithUnderscores() throws Exception {
+ when(metaData.getColumnCount()).thenReturn(3);
+
+ when(metaData.getColumnLabel(1)).thenReturn("t_h_r_e_e");
+ when(metaData.getColumnLabel(2)).thenReturn("o_n_e");
+ when(metaData.getColumnLabel(3)).thenReturn("t_w_o");
+
+ int[] ret = processor.mapColumnsToProperties(metaData, propDescriptors);
+
+ assertNotNull(ret);
+ assertEquals(4, ret.length);
+ assertEquals(-1, ret[0]);
+ assertEquals(2, ret[1]);
+ assertEquals(0, ret[2]);
+ assertEquals(1, ret[3]);
+ }
+
+ static class TestBean {
+ private String one;
+ private int two;
+ private long three;
+
+ public String getOne() {
+ return one;
+ }
+
+ public void setOne(String one) {
+ this.one = one;
+ }
+
+ public int getTwo() {
+ return two;
+ }
+
+ public void setTwo(int two) {
+ this.two = two;
+ }
+
+ public long getThree() {
+ return three;
+ }
+
+ public void setThree(long three) {
+ this.three = three;
+ }
+ }
+
+}
Propchange: commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils2/GenerousBeanProcessorTest.java
------------------------------------------------------------------------------
svn:eol-style = native