commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Gregory (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DBCP-473) Datasource bean creation failed due to mismatched return type of setter and getter for connectionInitSqls in BasicDataSource
Date Sat, 16 Jun 2018 22:37:00 GMT

     [ https://issues.apache.org/jira/browse/DBCP-473?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Gary Gregory updated DBCP-473:
------------------------------
    Fix Version/s:     (was: 2.4.0)
                   2.4.1

> Datasource bean creation failed due to mismatched return type of setter and getter for
connectionInitSqls in BasicDataSource
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DBCP-473
>                 URL: https://issues.apache.org/jira/browse/DBCP-473
>             Project: Commons DBCP
>          Issue Type: Improvement
>    Affects Versions: 2.1.1
>         Environment: Tomcat
> java 7 update 70
> spring 2.5
>            Reporter: Mubasher Usman
>            Priority: Critical
>              Labels: easyfix
>             Fix For: 2.4.1
>
>
> {panel:title=Description|titleBGColor=#8DB|bgColor=#AAA}
> The issue is that while Spring Starts bean creation of datasource, It throws exception
org.springframework.beans.NotWritablePropertyException. And complains that Invalid property
'connectionInitSqls' of bean class [org.apache.commons.dbcp2.BasicDataSource]: Bean property
'connectionInitSqls' is not writable or has an invalid setter method. Does the parameter type
of the setter match the return type of the getter?
> {panel}
> {panel:title=Steps To Reproduce|titleBGColor=#8DB|bgColor=#AAA}
> Here is My bean configuration in Spring's XML config file.
> {code:title=applicationContext-datasource.xml}
> <bean id="fileStore_dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
> 	destroy-method="close" lazy-init="true">
>         <!-- Just that property which causes problem -->
> 	<property name="connectionInitSqls">
> 		<list>
> 			<value>#{filestore.jdbc.connectionInitSql}</value>
> 		</list>
> 	</property>
> </bean>
> {code}
> Here is the Code from DBCP2 version 2.1.1
> {code:title=BasicDataSource.java}
> private volatile List<String> connectionInitSqls;
>     public List<String> getConnectionInitSqls() {
>         final List<String> result = connectionInitSqls;
>         if (result == null) {
>             return Collections.emptyList();
>         }
>         return result;
>     }
>     public void setConnectionInitSqls(final Collection<String> connectionInitSqls)
{
>         if (connectionInitSqls != null && connectionInitSqls.size() > 0) {
>             ArrayList<String> newVal = null;
>             for (final String s : connectionInitSqls) {
>             if (s != null && s.trim().length() > 0) {
>                     if (newVal == null) {
>                         newVal = new ArrayList<>();
>                     }
>                     newVal.add(s);
>                 }
>             }
>             this.connectionInitSqls = newVal;
>         } else {
>             this.connectionInitSqls = null;
>         }
>     }
> {code}
> {panel}
> {panel:title=Improvements/sugestions|titleBGColor=#AD3|bgColor=#AAA}
> There should be a new setter method for connectionInitSqls which accept List<E>
Type argument.
> {panel}
> {panel:title=Notes|titleBGColor=#3AF|bgColor=#AAA}
> There is a good discussion on this issue on Stackoverflow. http://stackoverflow.com/questions/40636372/spring-bean-creation-failed-can-parameter-type-of-the-setter-be-parent-of-the-r/40637584?noredirect=1#comment68514083_40637584
> {panel} 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message