Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 4.3.1
-
Fix Version/s: None
-
Component/s: Panels
-
Labels:None
-
Number of attachments :
Description
The DBConnectionValidator is being triggered when the driver in the combo is being selected, and before the password had been entered (and therefore the database connection fails because of no password). This was working in 4.1
Here's the userInputSpec snippit:
<field type="combo" variable="driver">
<description align="left" txt="Select the JDBC Driver Class:"
id="combo.1.description.driver"/>
<spec>
<choice processor="com.izforge.izpack.processor.LoadJDBCDriverCombo" />
</spec>
<validator class="com.izforge.izpack.util.NotEmptyValidator" id="val.1.database.texterror" txt="Please select database driver"></validator>
</field>
<field type="text" variable="username">
<spec txt="User Name:" id="text.1.username" size="30" set="sa"/>
</field>
<field type="space"/>
<field type="password" variable="password">
<spec>
<pwd txt="Password" id="pwd.1.password" size="30" />
</spec>
<validator class="com.izforge.izpack.validator.DBConnectionValidator" txt="The database connection cannot be made, please check the connection properties" id="val.1.dsRepository.error"/>
</field>
Here is the stacktrace:
at com.izforge.izpack.validator.DBConnectionValidator.validate(DBConnectionValidator.java:122)
at com.izforge.izpack.panels.PasswordGroup.validateContents(PasswordGroup.java:170)
at com.izforge.izpack.panels.UserInputPanel.readPasswordField(UserInputPanel.java:2404)
at com.izforge.izpack.panels.UserInputPanel.readInput(UserInputPanel.java:1139)
at com.izforge.izpack.panels.UserInputPanel.isValidated(UserInputPanel.java:1018)
at com.izforge.izpack.panels.UserInputPanel.updateDialog(UserInputPanel.java:3950)
at com.izforge.izpack.panels.UserInputPanel.itemStateChanged(UserInputPanel.java:3942)
at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1207)
at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1255)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:1311)
at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:100)
at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:88)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:559)
My thought for fixing this would be to change the itemstatechanegd method to only trigger the read/validation for the field that was entered. Currently it tries to process all fields when it calls readInput().