[ http://issues.apache.org/jira/browse/DERBY-1130?page=comments#action_12427578 ] Daniel John Debrunner commented on DERBY-1130: ----------------------------------------------
With this change the setConnectionAttributes method now is declared to throw a SQLException. I thought such methods should not throw exceptions since it is a Java Bean property setter method. The suggestion above that this method throw an exception if databaseName has not been set but is set with setConnectionAttributes is invalid. Since DataSource properties may be set from a configuration file, the data source should not impose any ordering on the setting of the properties. I think typically any exception would be raised when a connection is requested. Also for any error text, it's clearer if the usage refers to setting the property connectionAttributes rather than instructions to use (or not use) setConnectionAttributes (the setter methods). Most configuration of these data sources is through gui's and sets of properties not through Java code directly. > Client should not allow databaseName to be set with setConnectionAttributes > --------------------------------------------------------------------------- > > Key: DERBY-1130 > URL: http://issues.apache.org/jira/browse/DERBY-1130 > Project: Derby > Issue Type: Bug > Components: Network Client > Affects Versions: 10.1.1.0, 10.1.1.1, 10.1.1.2, 10.1.2.0, 10.1.2.1, > 10.1.2.2, 10.1.2.3, 10.2.0.0, 10.1.3.0, 10.1.2.4 > Reporter: Kathey Marsden > Assigned To: Deepa Remesh > Fix For: 10.2.0.0 > > Attachments: d1130-client-v1.diff, d1130-client-v1.status, > d1130-test-dataSourceReference.diff, d1130-test-dataSourceReference.status, > derby-1130-v1.diff, derby-1130-v1.status > > > Per this thread, setConnectionAttributes should not set databaseName. > http://www.nabble.com/double-check-on-checkDataSource-t1187602.html#a3128621 > Currently this is allowed for client but should be disabled. I think it is > OK to change because we have documented that client will be changed to match > embedded for implementation defined behaviour. Hopefully its use is rare as > most folks would use the standard setDatabaseName. Still there should be a > release not when the change is made and it would be better to change it > sooner than later: > Below is the repro. > Here is the output with Client > D>java DatabaseNameWithSetConnAttr > ds.setConnectionAttributes(databaseName=wombat;create=true) > ds.getDatabaseName() = null (should be null) > FAIL: Should not have been able to set databaseName with connection attributes > Also look for tests disabled with this bug number in the test > checkDataSource30.java > import java.sql.*; > import java.lang.reflect.Method; > public class DatabaseNameWithSetConnAttr{ > public static void main(String[] args) { > try { > > String attributes = "databaseName=wombat;create=true"; > org.apache.derby.jdbc.ClientDataSource ds = new > org.apache.derby.jdbc.ClientDataSource(); > //org.apache.derby.jdbc.EmbeddedDataSource ds = new > //org.apache.derby.jdbc.EmbeddedDataSource(); > System.out.println("ds.setConnectionAttributes(" + > attributes + ")"); > ds.setConnectionAttributes(attributes); > System.out.println("ds.getDatabaseName() = " + > ds.getDatabaseName() > + " (should be null)" ); > Connection conn = ds.getConnection(); > } catch (SQLException e) { > String sqlState = e.getSQLState(); > if (sqlState != null && > sqlState.equals("XJ041")) > { > System.out.println("PASS: An exception was > thrown trying to get a connetion from a datasource after setting databaseName > with setConnectionAttributes"); > System.out.println("EXPECTED EXCEPTION: " + > e.getSQLState() > + " > - " + e.getMessage()); > return; > } > while (e != null) > { > System.out.println("FAIL - UNEXPECTED > EXCEPTION: " + e.getSQLState()); > e.printStackTrace(); > e = e.getNextException(); > } > return; > } > System.out.println("FAIL: Should not have been able to set > databaseName with connection attributes"); > } > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
