IBM / JTOpen

IBM Toolbox for Java, an IBM i communications library
https://ibm.github.io/JTOpen/
Other
62 stars 28 forks source link

Get rid of `PropertyVetoException`? #48

Closed ThePrez closed 1 year ago

ThePrez commented 1 year ago

The methods that throw PropertyVetoException is likely the most annoying element of JTOpen.

This is a proposal to remove all instances of PropertyVetoException. This ends up being a very wide-sweeping change, since the legacy "beans" support is present in 231 files. In order to remove the PropertyVetoException, we would also need to gut the underlying PropertyChangeListener and VetoableChangeListener support on these objects. That would mean removing function (and a breaking change), since existing applications may be implementing these listeners.

For most applications, this would break source compatibility but not runtime compatibility. That is:

Inevitably, if this change were to be made, it would need to be on a major semver boundary.

It would likely be the riskiest and most disruptive change in jt400's history.

Open for thoughts/comments from any community members

ThePrez commented 1 year ago

FWIW, the affected parts list....

1526 results - 231 files

src\main\java\com\ibm\as400\access\AFPResource.java: src\main\java\com\ibm\as400\access\AFPResourceList.java: src\main\java\com\ibm\as400\access\AFPResourceListImplRemote.java: src\main\java\com\ibm\as400\access\AS400.java: src\main\java\com\ibm\as400\access\AS400CertificateUserProfileUtil.java: src\main\java\com\ibm\as400\access\AS400CertificateUsrPrfUtilImpl.java: src\main\java\com\ibm\as400\access\AS400CertificateUsrPrfUtilImplRemote.java: src\main\java\com\ibm\as400\access\AS400CertificateUtil.java: src\main\java\com\ibm\as400\access\AS400CertificateUtilImplRemote.java: src\main\java\com\ibm\as400\access\AS400CertificateVldlUtil.java: src\main\java\com\ibm\as400\access\AS400CertificateVldlUtilImplRemote.java: src\main\java\com\ibm\as400\access\AS400File.java: src\main\java\com\ibm\as400\access\AS400FileImplBase.java: src\main\java\com\ibm\as400\access\AS400FileImplNative.java: src\main\java\com\ibm\as400\access\AS400FileImplRemote.java: src\main\java\com\ibm\as400\access\AS400FileRecordDescription.java: src\main\java\com\ibm\as400\access\AS400FileRecordDescriptionImplRemote.java: src\main\java\com\ibm\as400\access\AS400FTP.java: src\main\java\com\ibm\as400\access\AS400ImplProxy.java: src\main\java\com\ibm\as400\access\AS400ImplRemote.java: src\main\java\com\ibm\as400\access\AS400JDBCConnectionPool.java: src\main\java\com\ibm\as400\access\AS400JDBCConnectionRedirect.java: src\main\java\com\ibm\as400\access\AS400JDBCDataSource.java: src\main\java\com\ibm\as400\access\AS400JDBCDriver.java: src\main\java\com\ibm\as400\access\AS400JDBCManagedDataSource.java: src\main\java\com\ibm\as400\access\AS400Message.java: src\main\java\com\ibm\as400\access\BaseDataQueue.java: src\main\java\com\ibm\as400\access\BytesWithOffset.java: src\main\java\com\ibm\as400\access\CharacterDataArea.java: src\main\java\com\ibm\as400\access\ClusteredHashTable.java: src\main\java\com\ibm\as400\access\Command.java: src\main\java\com\ibm\as400\access\CommandCall.java: src\main\java\com\ibm\as400\access\ConnectionList.java: src\main\java\com\ibm\as400\access\ConnectionPool.java: src\main\java\com\ibm\as400\access\ConnectionPoolProperties.java: src\main\java\com\ibm\as400\access\CoverLetterReader.java: src\main\java\com\ibm\as400\access\DataArea.java: src\main\java\com\ibm\as400\access\DataQueueAttributes.java: src\main\java\com\ibm\as400\access\DateTimeConverter.java: src\main\java\com\ibm\as400\access\DecimalDataArea.java: src\main\java\com\ibm\as400\access\DirectoryEntryList.java: src\main\java\com\ibm\as400\access\EnvironmentVariable.java: src\main\java\com\ibm\as400\access\EnvironmentVariableList.java: src\main\java\com\ibm\as400\access\ErrorCodeParameter.java: src\main\java\com\ibm\as400\access\FTP.java: src\main\java\com\ibm\as400\access\IFSFile.java: src\main\java\com\ibm\as400\access\IFSFileImplRemote.java: src\main\java\com\ibm\as400\access\IFSFileInputStream.java: src\main\java\com\ibm\as400\access\IFSFileOutputStream.java: src\main\java\com\ibm\as400\access\IFSJavaFile.java: src\main\java\com\ibm\as400\access\IFSRandomAccessFile.java: src\main\java\com\ibm\as400\access\IFSTextFileOutputStream.java: src\main\java\com\ibm\as400\access\ISeriesNetServer.java: src\main\java\com\ibm\as400\access\JavaApplicationCall.java: src\main\java\com\ibm\as400\access\Job.java: src\main\java\com\ibm\as400\access\JobDescription.java: src\main\java\com\ibm\as400\access\JobList.java: src\main\java\com\ibm\as400\access\JobLog.java: src\main\java\com\ibm\as400\access\JobQueue.java: src\main\java\com\ibm\as400\access\KeyedFile.java: src\main\java\com\ibm\as400\access\ListUtilities.java: src\main\java\com\ibm\as400\access\LocalDataArea.java: src\main\java\com\ibm\as400\access\LogicalDataArea.java: src\main\java\com\ibm\as400\access\MemberList.java: src\main\java\com\ibm\as400\access\MessageFBDataFormat.java: src\main\java\com\ibm\as400\access\MessageFBFormat.java: src\main\java\com\ibm\as400\access\MessageFile.java: src\main\java\com\ibm\as400\access\MessageQueue.java: src\main\java\com\ibm\as400\access\NetServer.java: src\main\java\com\ibm\as400\access\NetServerConnection.java: src\main\java\com\ibm\as400\access\NetServerSession.java: src\main\java\com\ibm\as400\access\NetServerShare.java: src\main\java\com\ibm\as400\access\ObjectDescription.java: src\main\java\com\ibm\as400\access\ObjectList.java: src\main\java\com\ibm\as400\access\OutputQueue.java: src\main\java\com\ibm\as400\access\OutputQueueList.java: src\main\java\com\ibm\as400\access\PanelGroup.java: src\main\java\com\ibm\as400\access\Permission.java: src\main\java\com\ibm\as400\access\PermissionAccess.java: src\main\java\com\ibm\as400\access\PermissionAccessDLO.java: src\main\java\com\ibm\as400\access\PermissionAccessQSYS.java: src\main\java\com\ibm\as400\access\PermissionAccessRoot.java: src\main\java\com\ibm\as400\access\PoolItem.java: src\main\java\com\ibm\as400\access\Printer.java: src\main\java\com\ibm\as400\access\PrinterFile.java: src\main\java\com\ibm\as400\access\PrinterFileList.java: src\main\java\com\ibm\as400\access\PrinterList.java: src\main\java\com\ibm\as400\access\PrintObject.java: src\main\java\com\ibm\as400\access\PrintObjectList.java: src\main\java\com\ibm\as400\access\Product.java: src\main\java\com\ibm\as400\access\ProfileTokenImplNative.java: src\main\java\com\ibm\as400\access\ProgramCall.java: src\main\java\com\ibm\as400\access\ProgramParameter.java: src\main\java\com\ibm\as400\access\PTF.java: src\main\java\com\ibm\as400\access\PTFGroup.java: src\main\java\com\ibm\as400\access\PTFGroupList.java: src\main\java\com\ibm\as400\access\PxConstructorReqSV.java: src\main\java\com\ibm\as400\access\QSYSObjectPathName.java: src\main\java\com\ibm\as400\access\QSYSPermission.java: src\main\java\com\ibm\as400\access\Record.java: src\main\java\com\ibm\as400\access\RecordFormat.java: src\main\java\com\ibm\as400\access\SaveFile.java: src\main\java\com\ibm\as400\access\SecureAS400.java: src\main\java\com\ibm\as400\access\ServiceProgramCall.java: src\main\java\com\ibm\as400\access\SpooledFileList.java: src\main\java\com\ibm\as400\access\Subsystem.java: src\main\java\com\ibm\as400\access\SystemPool.java: src\main\java\com\ibm\as400\access\SystemStatus.java: src\main\java\com\ibm\as400\access\SystemStatusFormat.java: src\main\java\com\ibm\as400\access\SystemValue.java: src\main\java\com\ibm\as400\access\SystemValueGroup.java: src\main\java\com\ibm\as400\access\SystemValueList.java: src\main\java\com\ibm\as400\access\ToolboxSignonHandler.java: src\main\java\com\ibm\as400\access\User.java: src\main\java\com\ibm\as400\access\UserList.java: src\main\java\com\ibm\as400\access\UserSpace.java: src\main\java\com\ibm\as400\access\UserSpaceImplRemote.java: src\main\java\com\ibm\as400\access\WriterJobList.java: src\main\java\com\ibm\as400\access\list\OpenList.java: src\main\java\com\ibm\as400\data\PcmlProgram.java: src\main\java\com\ibm\as400\micro\MEServer.java: src\main\java\com\ibm\as400\resource\Resource.java: src\main\java\com\ibm\as400\resource\ResourceList.java: src\main\java\com\ibm\as400\resource\RIFSFile.java: src\main\java\com\ibm\as400\resource\RIFSFileList.java: src\main\java\com\ibm\as400\resource\RJavaProgram.java: src\main\java\com\ibm\as400\resource\RJob.java: src\main\java\com\ibm\as400\resource\RJobList.java: src\main\java\com\ibm\as400\resource\RJobLog.java: src\main\java\com\ibm\as400\resource\RMessageQueue.java: src\main\java\com\ibm\as400\resource\RPrinter.java: src\main\java\com\ibm\as400\resource\RPrinterList.java: src\main\java\com\ibm\as400\resource\RQueuedMessage.java: src\main\java\com\ibm\as400\resource\RSoftwareResource.java: src\main\java\com\ibm\as400\resource\RUser.java: src\main\java\com\ibm\as400\resource\RUserList.java: src\main\java\com\ibm\as400\security\auth\AS400Credential.java: src\main\java\com\ibm\as400\security\auth\AS400Principal.java: src\main\java\com\ibm\as400\security\auth\AuthenticationSystem.java: src\main\java\com\ibm\as400\security\auth\DefaultProfileTokenProvider.java: src\main\java\com\ibm\as400\security\auth\ProfileHandleCredential.java: src\main\java\com\ibm\as400\security\auth\ProfileTokenCredential.java: src\main\java\com\ibm\as400\security\auth\ProfileTokenImplRemote.java: src\main\java\com\ibm\as400\security\auth\UserProfilePrincipal.java: src\main\java\com\ibm\as400\util\html\ButtonFormInput.java: src\main\java\com\ibm\as400\util\html\CheckboxFormInput.java: src\main\java\com\ibm\as400\util\html\FileListElement.java: src\main\java\com\ibm\as400\util\html\FileListRenderer.java: src\main\java\com\ibm\as400\util\html\FileTreeElement.java: src\main\java\com\ibm\as400\util\html\FormInput.java: src\main\java\com\ibm\as400\util\html\GridLayoutFormPanel.java: src\main\java\com\ibm\as400\util\html\HTMLDocument.java: src\main\java\com\ibm\as400\util\html\HTMLForm.java: src\main\java\com\ibm\as400\util\html\HTMLHyperlink.java: src\main\java\com\ibm\as400\util\html\HTMLTable.java: src\main\java\com\ibm\as400\util\html\HTMLTableCaption.java: src\main\java\com\ibm\as400\util\html\HTMLTableCell.java: src\main\java\com\ibm\as400\util\html\HTMLTableHeader.java: src\main\java\com\ibm\as400\util\html\HTMLTableRow.java: src\main\java\com\ibm\as400\util\html\HTMLText.java: src\main\java\com\ibm\as400\util\html\HTMLTreeElement.java: src\main\java\com\ibm\as400\util\html\ImageFormInput.java: src\main\java\com\ibm\as400\util\html\LabelFormElement.java: src\main\java\com\ibm\as400\util\html\RadioFormInput.java: src\main\java\com\ibm\as400\util\html\RadioFormInputGroup.java: src\main\java\com\ibm\as400\util\html\SelectFormElement.java: src\main\java\com\ibm\as400\util\html\SelectOption.java: src\main\java\com\ibm\as400\util\html\TextAreaFormElement.java: src\main\java\com\ibm\as400\util\html\TextFormInput.java: src\main\java\com\ibm\as400\util\html\ToggleFormInput.java: src\main\java\com\ibm\as400\util\html\URLParser.java: src\main\java\com\ibm\as400\util\servlet\AS400Servlet.java: src\main\java\com\ibm\as400\util\servlet\HTMLFormConverter.java: src\main\java\com\ibm\as400\util\servlet\HTMLTableConverter.java: src\main\java\com\ibm\as400\util\servlet\ListMetaData.java: src\main\java\com\ibm\as400\util\servlet\ListRowData.java: src\main\java\com\ibm\as400\util\servlet\RecordFormatMetaData.java: src\main\java\com\ibm\as400\util\servlet\RecordListRowData.java: src\main\java\com\ibm\as400\util\servlet\ResourceListRowData.java: src\main\java\com\ibm\as400\util\servlet\RowData.java: src\main\java\com\ibm\as400\util\servlet\ServletHyperlink.java: src\main\java\com\ibm\as400\util\servlet\SQLResultSetMetaData.java: src\main\java\com\ibm\as400\util\servlet\SQLResultSetRowData.java: src\main\java\com\ibm\as400\util\servlet\StringConverter.java: src\main\java\com\ibm\as400\vaccess\AS400DetailsModel.java: src\main\java\com\ibm\as400\vaccess\AS400DetailsPane.java: src\main\java\com\ibm\as400\vaccess\AS400ExplorerPane.java: src\main\java\com\ibm\as400\vaccess\AS400ListModel.java: src\main\java\com\ibm\as400\vaccess\AS400ListPane.java: src\main\java\com\ibm\as400\vaccess\AS400TreeModel.java: src\main\java\com\ibm\as400\vaccess\AS400TreePane.java: src\main\java\com\ibm\as400\vaccess\CommandCallButton.java: src\main\java\com\ibm\as400\vaccess\CommandCallMenuItem.java: src\main\java\com\ibm\as400\vaccess\DataQueueDocument.java: src\main\java\com\ibm\as400\vaccess\DoubleClickAdapter.java: src\main\java\com\ibm\as400\vaccess\IFSTextFileDocument.java: src\main\java\com\ibm\as400\vaccess\KeyedDataQueueDocument.java: src\main\java\com\ibm\as400\vaccess\ProgramCallButton.java: src\main\java\com\ibm\as400\vaccess\ProgramCallMenuItem.java: src\main\java\com\ibm\as400\vaccess\RecordListData.java: src\main\java\com\ibm\as400\vaccess\RecordListFormPane.java: src\main\java\com\ibm\as400\vaccess\RecordListTableModel.java: src\main\java\com\ibm\as400\vaccess\RecordListTablePane.java: src\main\java\com\ibm\as400\vaccess\SpooledFileViewer.java: src\main\java\com\ibm\as400\vaccess\SQLConnection.java: src\main\java\com\ibm\as400\vaccess\SQLQueryBuilderPane.java: src\main\java\com\ibm\as400\vaccess\SQLResultSetFormPane.java: src\main\java\com\ibm\as400\vaccess\SQLResultSetTableModel.java: src\main\java\com\ibm\as400\vaccess\SQLResultSetTablePane.java: src\main\java\com\ibm\as400\vaccess\SQLStatementButton.java: src\main\java\com\ibm\as400\vaccess\SQLStatementDocument.java: src\main\java\com\ibm\as400\vaccess\SQLStatementMenuItem.java: src\main\java\com\ibm\as400\vaccess\VetoableChangeSupport.java: src\main\java\com\ibm\as400\vaccess\VIFSDirectory.java: src\main\java\com\ibm\as400\vaccess\VIFSFile.java: src\main\java\com\ibm\as400\vaccess\VJavaApplicationCall.java: src\main\java\com\ibm\as400\vaccess\VJob.java: src\main\java\com\ibm\as400\vaccess\VJobList.java: src\main\java\com\ibm\as400\vaccess\VMessageList.java: src\main\java\com\ibm\as400\vaccess\VMessageQueue.java: src\main\java\com\ibm\as400\vaccess\VPane.java: src\main\java\com\ibm\as400\vaccess\VPrinter.java: src\main\java\com\ibm\as400\vaccess\VPrinterOutput.java: src\main\java\com\ibm\as400\vaccess\VPrinters.java: src\main\java\com\ibm\as400\vaccess\VSystemPool.java: src\main\java\com\ibm\as400\vaccess\VSystemStatus.java: src\main\java\com\ibm\as400\vaccess\VSystemStatusPane.java: src\main\java\com\ibm\as400\vaccess\VSystemValue.java: src\main\java\com\ibm\as400\vaccess\VSystemValueList.java: src\main\java\com\ibm\as400\vaccess\VUser.java: src\main\java\com\ibm\as400\vaccess\VUserList.java:

jwoehr commented 1 year ago

Can anyone explain what PropertyVetoException was meant to express?

ThePrez commented 1 year ago

Idea is too disruptive without enough of a return to justify. Closing