From 69d6737636e6eb3dbfc2f28303a3fa93b9494467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Crespo=20Garc=C3=ADa?= Date: Tue, 25 Nov 2025 11:15:43 +0100 Subject: [PATCH 1/8] Upgrade SDK version: fix compilation issues (renamed classes, lowercase enums, javax annotations, adapt to fluent API format). Apply amendments to fix tests: accept case-insensitive enums, ignore order of JSON fields in some cases, refine some JSON mocks. --- build.gradle | 5 +- src/main/java/io/seqera/tower/cli/Tower.java | 1 + .../tower/cli/commands/AbstractApiCmd.java | 12 +-- .../seqera/tower/cli/commands/LaunchCmd.java | 6 +- .../tower/cli/commands/actions/ListCmd.java | 4 +- .../tower/cli/commands/actions/ViewCmd.java | 2 +- .../commands/actions/add/AddGitHubCmd.java | 2 +- .../cli/commands/actions/add/AddTowerCmd.java | 2 +- .../computeenvs/AbstractComputeEnvCmd.java | 6 +- .../cli/commands/computeenvs/ListCmd.java | 3 +- .../computeenvs/platforms/AltairPlatform.java | 14 +-- .../platforms/AwsBatchForgePlatform.java | 18 ++-- .../platforms/AwsBatchManualPlatform.java | 19 ++-- .../platforms/AzBatchForgePlatform.java | 15 +-- .../platforms/AzBatchManualPlatform.java | 13 +-- .../computeenvs/platforms/EksPlatform.java | 8 +- .../computeenvs/platforms/GkePlatform.java | 8 +- .../platforms/GoogleBatchPlatform.java | 13 +-- .../platforms/GoogleLifeSciencesPlatform.java | 14 +-- .../computeenvs/platforms/K8sPlatform.java | 16 ++-- .../computeenvs/platforms/LsfPlatform.java | 13 ++- .../computeenvs/platforms/MoabPlatform.java | 14 +-- .../platforms/SeqeraComputePlatform.java | 7 +- .../computeenvs/platforms/SlurmPlatform.java | 14 +-- .../computeenvs/platforms/UnivaPlatform.java | 14 +-- .../tower/cli/commands/data/links/AddCmd.java | 2 +- .../cli/commands/data/links/BrowseCmd.java | 8 +- .../cli/commands/data/links/UploadCmd.java | 4 +- .../data/links/upload/AwsUploader.java | 3 +- .../datasets/AbstractDatasetsCmd.java | 30 +++--- .../cli/commands/datasets/DeleteCmd.java | 4 +- .../cli/commands/datasets/DownloadCmd.java | 8 +- .../tower/cli/commands/datasets/ListCmd.java | 4 +- .../cli/commands/datasets/UpdateCmd.java | 4 +- .../tower/cli/commands/datasets/UrlCmd.java | 8 +- .../tower/cli/commands/datasets/ViewCmd.java | 4 +- .../datasets/versions/VersionsCmd.java | 4 +- .../tower/cli/commands/enums/WspRole.java | 32 +++++++ .../cli/commands/global/ShowLabelsOption.java | 2 +- .../cli/commands/labels/AddLabelsCmd.java | 2 +- .../tower/cli/commands/labels/Label.java | 2 +- .../cli/commands/labels/ListLabelsCmd.java | 2 +- .../participants/AbstractParticipantsCmd.java | 8 +- .../cli/commands/participants/ListCmd.java | 4 +- .../cli/commands/participants/UpdateCmd.java | 12 +-- .../pipelines/AbstractPipelinesCmd.java | 2 +- .../tower/cli/commands/pipelines/ListCmd.java | 4 +- .../tower/cli/commands/pipelines/ViewCmd.java | 7 +- .../tower/cli/commands/runs/CancelCmd.java | 2 +- .../tower/cli/commands/runs/DumpCmd.java | 2 +- .../tower/cli/commands/runs/ListCmd.java | 2 +- .../tower/cli/commands/runs/ViewCmd.java | 2 +- .../commands/studios/AbstractStudiosCmd.java | 3 +- .../tower/cli/commands/studios/ListCmd.java | 2 +- .../tower/cli/commands/workspaces/AddCmd.java | 4 +- .../collaborators/CollaboratorsList.java | 2 +- .../cli/responses/data/DataLinksList.java | 2 +- .../cli/responses/datasets/DatasetList.java | 6 +- .../datasets/DatasetVersionsList.java | 6 +- .../cli/responses/datasets/DatasetView.java | 6 +- .../labels/DeleteLabelsResponse.java | 2 +- .../labels/ListLabelsCmdResponse.java | 2 +- .../participants/ParticipantAdded.java | 6 +- .../participants/ParticipantsList.java | 8 +- .../responses/pipelines/PipelinesList.java | 2 +- .../tower/cli/responses/runs/RunList.java | 2 +- .../cli/responses/runs/tasks/TasksView.java | 2 +- .../studios/StudioCheckpointsList.java | 7 +- .../cli/responses/studios/StudiosList.java | 7 +- .../cli/responses/studios/StudiosView.java | 4 +- .../tower/cli/responses/teams/TeamsList.java | 2 +- .../seqera/tower/cli/utils/FormatHelper.java | 20 ++-- .../tower/cli/utils/PaginationInfo.java | 2 +- .../cli/computeenvs/ComputeEnvsCmdTest.java | 93 ++++++++++--------- .../platforms/AltairPlatformTest.java | 17 +++- .../platforms/EksPlatformTest.java | 10 +- .../platforms/GkePlatformTest.java | 11 ++- .../GoogleLifeSciencesPlatformTest.java | 16 +++- .../platforms/K8sPlatformTest.java | 16 +++- .../platforms/LsfPlatformTest.java | 11 ++- .../platforms/MoabPlatformTest.java | 10 +- .../platforms/SlurmPlatformTest.java | 11 ++- .../platforms/UnivaPlatformTest.java | 11 ++- .../tower/cli/datasets/DatasetsCmdTest.java | 14 +-- .../tower/cli/labels/LabelsCmdTest.java | 8 +- .../cli/participants/ParticipantsCmdTest.java | 44 ++++----- .../shared/ComputeEnvExportFormatTest.java | 6 +- src/test/resources/runcmd/launch.json | 1 + src/test/resources/runcmd/launch_view.json | 1 + .../resources/runcmd/pipelines_update.json | 1 + .../resources/runcmd/runs/task_detail.json | 2 +- .../runcmd/runs/task_detail_null_values.json | 2 +- .../resources/runcmd/runs/task_object.json | 2 +- .../runcmd/runs/task_object_null_values.json | 2 +- .../runcmd/runs/tasks_list_response.json | 4 +- 95 files changed, 461 insertions(+), 340 deletions(-) create mode 100644 src/main/java/io/seqera/tower/cli/commands/enums/WspRole.java diff --git a/build.gradle b/build.gradle index a0cda2a1..f7b02cee 100644 --- a/build.gradle +++ b/build.gradle @@ -23,12 +23,13 @@ repositories { } dependencies { - implementation 'javax.activation:activation:1.1.1' + implementation 'javax.annotation:javax.annotation-api:1.3.2' + implementation 'jakarta.annotation:jakarta.annotation-api:3.0.0' implementation 'org.slf4j:slf4j-api:1.7.36' implementation 'ch.qos.logback:logback-core:1.5.19' implementation 'ch.qos.logback:logback-classic:1.5.19' - implementation 'io.seqera.tower:tower-java-sdk:1.43.1' + implementation 'io.seqera.tower:tower-java-sdk:1.92.0' // Upgrade transitive Jersey client dependencies to non-vulnerable 2.x version implementation "org.glassfish.jersey.core:jersey-client:2.47" implementation "org.glassfish.jersey.media:jersey-media-multipart:2.47" diff --git a/src/main/java/io/seqera/tower/cli/Tower.java b/src/main/java/io/seqera/tower/cli/Tower.java index 29df354e..f651137c 100644 --- a/src/main/java/io/seqera/tower/cli/Tower.java +++ b/src/main/java/io/seqera/tower/cli/Tower.java @@ -107,6 +107,7 @@ protected static CommandLine buildCommandLine() { Tower app = new Tower(); CommandLine cmd = new CommandLine(app); cmd.setUsageHelpLongOptionsMaxWidth(40); + cmd.setCaseInsensitiveEnumValuesAllowed(true); return cmd; } diff --git a/src/main/java/io/seqera/tower/cli/commands/AbstractApiCmd.java b/src/main/java/io/seqera/tower/cli/commands/AbstractApiCmd.java index 0c3c38f0..2cdafab9 100644 --- a/src/main/java/io/seqera/tower/cli/commands/AbstractApiCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/AbstractApiCmd.java @@ -63,7 +63,7 @@ import io.seqera.tower.model.OrgAndWorkspaceDto; import io.seqera.tower.model.PipelineDbDto; import io.seqera.tower.model.PipelineQueryAttribute; -import io.seqera.tower.model.UserDbDto; +import io.seqera.tower.model.UserResponseDto; import io.seqera.tower.model.WorkflowQueryAttribute; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.logging.LoggingFeature; @@ -273,7 +273,7 @@ protected Properties getCliProperties() throws ApiException { private ApiClient buildApiClient() { return new ApiClient() { @Override - protected void performAdditionalClientConfiguration(ClientConfig clientConfig) { + protected void applyDebugSetting(ClientConfig clientConfig) { if (app().verbose) { clientConfig.register(new LoggingFeature(Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME), java.util.logging.Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, 1024 * 50 /* Log payloads up to 50K */)); clientConfig.property(LoggingFeature.LOGGING_FEATURE_VERBOSITY, LoggingFeature.Verbosity.PAYLOAD_ANY); @@ -281,8 +281,8 @@ protected void performAdditionalClientConfiguration(ClientConfig clientConfig) { } @Override - public Entity serialize(Object obj, Map formParams, String contentType) throws ApiException { - Entity entity = super.serialize(obj, formParams, contentType); + public Entity serialize(Object obj, Map formParams, String contentType, boolean isBodyNullable) throws ApiException { + Entity entity = super.serialize(obj, formParams, contentType, isBodyNullable); // Current SDK sends all multipart files as 'application/octet-stream' // this is a workaround to try to automatically detect the correct @@ -500,7 +500,7 @@ protected List findOrCreateLabels(Long wspId, List