bamaer opened a new pull request, #7680: URL: https://github.com/apache/hop/pull/7680
Adds the Oracle connection options the dialog was missing, plus the framework fixes that surfaced while building them. Oracle connection options - "Connect using": AUTOMATIC, SID, SERVICE_NAME, TNS_ALIAS and DESCRIPTOR, replacing the convention of marking a service name or SID with a '/' or ':' prefix on the database name. AUTOMATIC stays the default and reproduces the previous URLs exactly, so existing connections are untouched. - "Use TLS (TCPS)", which builds the long connect descriptor: the short host:port:sid form has nowhere to put a protocol. - "TLS credentials": NONE, WALLET (cwallet.sso / ewallet.p12) or JKS. Wallet and JKS are exclusive because the driver gives the wallet location precedence over the keystore properties, so offering both would let half the dialog be ignored. - TNS_ADMIN directory, server certificate DN matching, expected certificate DN. - Options that cannot apply to the chosen connection type are hidden rather than left visible and empty. These reach the driver as JDBC connection properties through a new IDatabase#getConnectionProperties hook rather than being written into the URL, so they apply to a TNS alias and to a manually entered URL as well. An entry on the Options tab still overrides a computed value. Framework fixes - GuiCompositeWidgets resolved enum combo values against the field class the GUI registry captured at plugin scan time, while the object being written to comes from wherever the plugin was loaded. Those can be different classloaders, so the constant had the right name but the wrong type and reflection rejected it with a bare "argument type mismatch". It now resolves against the setter's own parameter type. This affected any enum-backed combo in a plugin dialog, not just Oracle. - DatabaseMetaEditor installed its own listener in the single available slot and never called widgetsPopulated, so a database plugin implementing IGuiPluginCompositeWidgetsListener was never invoked. MsSqlServerNativeDatabaseMeta had therefore never enabled or disabled anything. - Reading widget values back no longer throws on a null destined for a primitive setter, or on a genuine type mismatch. Both skip and log the field and widget instead of failing with a message that named neither. Driver installation - DriverDownload gains companion coordinates, resolved at the driver's own version. Oracle declares oraclepki: the SSO keystore type an Oracle Wallet needs lives there and not in ojdbc, so without it a cwallet.sso connection fails with "ORA-17957 ... SSO KeyStore not available". - "hop driver install" no longer reports the driver as already installed when a companion it needs is missing, which would otherwise leave wallets broken with --force as the only cure and nothing pointing at it. Integration tests - An opt-in Oracle suite covering all four connection styles, a check that the TLS connections really did negotiate TCPS (asked of the database itself), and a table round trip over TLS. The Oracle Free image is around 9.5GB unpacked and takes minutes to create the database, so the project carries a disabled.txt and the normal run skips it; integration-tests/scripts/run-oracle-tests.sh runs it. - INCLUDE_DISABLED now accepts a comma separated project list, so the full suite can pull in one disabled project without enabling every other one. **Please** add a meaningful description for your change here ------------------------ Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily: - [x] Run `mvn clean install apache-rat:check` to make sure basic checks pass. A more thorough check will be performed on your pull request automatically. - [x] If you have a group of commits related to the same change, please squash your commits into one and force push your branch using `git rebase -i`. - [x] Mention the appropriate issue in your description (for example: `addresses #123`), if applicable. To make clear that you license your contribution under the [Apache License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0) you have to acknowledge this by using the following check-box. - [x] I hereby declare this contribution to be licensed under the [Apache License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0) - [ ] In any other case, please file an [Apache Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
