Skip to content

chore: update the apache lang3 version to 3.18.0#41154

Merged
nsarupr merged 2 commits intoreleasefrom
chore/update-apache-lang3-mvn-version
Jul 31, 2025
Merged

chore: update the apache lang3 version to 3.18.0#41154
nsarupr merged 2 commits intoreleasefrom
chore/update-apache-lang3-mvn-version

Conversation

@nsarupr
Copy link
Contributor

@nsarupr nsarupr commented Jul 30, 2025

Description

Tip

Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content, marketing, and DevRel team).

Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR.

Fixes #Issue Number
or
Fixes Issue URL

Warning

If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation

/ok-to-test tags="@tag.All"

🔍 Cypress test results

Tip

🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/16644871984
Commit: 99ae03d
Cypress dashboard.
Tags: @tag.All
Spec:


Thu, 31 Jul 2025 11:00:46 UTC

Communication

Should the DevRel and Marketing teams inform users about this change?

  • Yes
  • No

Summary by CodeRabbit

  • Chores
    • Updated the Apache Commons Lang library to the latest version for improved reliability.
    • Updated internal imports to use the new library version.

@nsarupr nsarupr added the ok-to-test Required label for CI label Jul 30, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 30, 2025

Walkthrough

The changes upgrade the Apache Commons Lang library from version 2.x to 3.x by updating Maven dependencies and modifying import statements across multiple Java files to reference the new org.apache.commons.lang3 package. No code logic, control flow, or public API declarations were altered.

Changes

Cohort / File(s) Change Summary
Maven Dependency Updates
app/server/appsmith-interfaces/pom.xml, app/server/appsmith-plugins/pom.xml, app/server/appsmith-server/pom.xml
Upgraded Apache Commons Lang dependency from commons-lang:2.6 to commons-lang3:3.18.0. Added exclusions for commons-lang in pf4j and pf4j-spring dependencies to prevent conflicts.
Commons Lang3 Import Updates - StringUtils
app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/DatasourceUtils.java, app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HeaderUtils.java, app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HintMessageUtils.java, app/server/appsmith-plugins/amazons3Plugin/src/main/java/com/external/utils/DatasourceUtils.java, app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/CompareDslActionDTO.java, app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/GitDeployKeyGenerator.java, app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java, app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration003AddInstanceNameToTenantConfiguration.java, app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/CurlImporterServiceCEImpl.java, app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UsagePulseServiceCEImpl.java, app/server/appsmith-server/src/test/java/com/appsmith/server/git/CommonGitServiceCETest.java, app/server/appsmith-server/src/test/java/com/appsmith/server/git/ops/GitCommitTests.java, app/server/appsmith-server/src/test/java/com/appsmith/server/git/ops/GitDiscardTests.java, app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java, app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/CreateDBTablePageSolutionTests.java, app/server/appsmith-plugins/snowflakePlugin/src/main/java/com/external/utils/SnowflakeKeyUtils.java
Changed import statements from org.apache.commons.lang.StringUtils to org.apache.commons.lang3.StringUtils. No logic changes.
Commons Lang3 Import Updates - ObjectUtils
app/server/appsmith-plugins/arangoDBPlugin/src/main/java/com/external/plugins/ArangoDBPlugin.java, app/server/appsmith-plugins/databricksPlugin/src/main/java/com/external/plugins/DatabricksPlugin.java, app/server/appsmith-plugins/elasticSearchPlugin/src/main/java/com/external/plugins/ElasticSearchPlugin.java, app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java, app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/utils/MssqlExecuteUtils.java, app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java, app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/OraclePlugin.java, app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/utils/OracleDatasourceUtils.java, app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/utils/OracleExecuteUtils.java, app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java, app/server/appsmith-plugins/redisPlugin/src/main/java/com/external/plugins/RedisPlugin.java, app/server/appsmith-plugins/redisPlugin/src/main/java/com/external/utils/RedisURIUtils.java, app/server/appsmith-plugins/redshiftPlugin/src/main/java/com/external/plugins/RedshiftPlugin.java, app/server/appsmith-plugins/redshiftPlugin/src/main/java/com/external/utils/RedshiftDatasourceUtils.java, app/server/appsmith-plugins/smtpPlugin/src/main/java/com/external/plugins/SmtpPlugin.java, app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/SegmentConfig.java, app/server/appsmith-server/src/main/java/com/appsmith/server/git/common/CommonGitServiceCEImpl.java, app/server/appsmith-server/src/main/java/com/appsmith/server/git/utils/GitAnalyticsUtils.java, app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java, app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/MockDataServiceCEImpl.java
Changed import statements from org.apache.commons.lang.ObjectUtils to org.apache.commons.lang3.ObjectUtils. No logic changes.
Commons Lang3 Import Updates - Other Utilities
app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomFormLoginServiceCEImpl.java, app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ExecutableDependencyEdge.java, app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ExecutionDependencyEdge.java, app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/ce/bridge/BridgeUpdate.java, app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java, app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/CreateDBTablePageSolutionCEImpl.java
Updated import statements for WordUtils, EqualsBuilder, HashCodeBuilder, NotImplementedException, ArrayUtils, and StringEscapeUtils to use org.apache.commons.lang3 packages. No logic changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

From Lang two to Lang three we glide,
Imports changed, no logic denied.
Maven trims the old away,
Conflicts gone, dependencies sway.
Utility classes now refreshed,
The codebase neat, dependencies blessed.
🎉📚✨

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ast-grep (0.38.6)
app/server/appsmith-server/src/main/java/com/appsmith/server/git/common/CommonGitServiceCEImpl.java
app/server/appsmith-server/src/test/java/com/appsmith/server/git/CommonGitServiceCETest.java
app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6d3d568 and 99ae03d.

📒 Files selected for processing (42)
  • app/server/appsmith-interfaces/pom.xml (2 hunks)
  • app/server/appsmith-plugins/amazons3Plugin/src/main/java/com/external/utils/DatasourceUtils.java (1 hunks)
  • app/server/appsmith-plugins/arangoDBPlugin/src/main/java/com/external/plugins/ArangoDBPlugin.java (1 hunks)
  • app/server/appsmith-plugins/databricksPlugin/src/main/java/com/external/plugins/DatabricksPlugin.java (1 hunks)
  • app/server/appsmith-plugins/elasticSearchPlugin/src/main/java/com/external/plugins/ElasticSearchPlugin.java (1 hunks)
  • app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java (1 hunks)
  • app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/utils/MssqlExecuteUtils.java (1 hunks)
  • app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java (1 hunks)
  • app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/OraclePlugin.java (1 hunks)
  • app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/utils/OracleDatasourceUtils.java (1 hunks)
  • app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/utils/OracleExecuteUtils.java (1 hunks)
  • app/server/appsmith-plugins/pom.xml (2 hunks)
  • app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java (1 hunks)
  • app/server/appsmith-plugins/redisPlugin/src/main/java/com/external/plugins/RedisPlugin.java (1 hunks)
  • app/server/appsmith-plugins/redisPlugin/src/main/java/com/external/utils/RedisURIUtils.java (1 hunks)
  • app/server/appsmith-plugins/redshiftPlugin/src/main/java/com/external/plugins/RedshiftPlugin.java (1 hunks)
  • app/server/appsmith-plugins/redshiftPlugin/src/main/java/com/external/utils/RedshiftDatasourceUtils.java (1 hunks)
  • app/server/appsmith-plugins/smtpPlugin/src/main/java/com/external/plugins/SmtpPlugin.java (1 hunks)
  • app/server/appsmith-plugins/snowflakePlugin/src/main/java/com/external/utils/SnowflakeKeyUtils.java (1 hunks)
  • app/server/appsmith-server/pom.xml (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomFormLoginServiceCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/SegmentConfig.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ExecutableDependencyEdge.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ExecutionDependencyEdge.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/git/common/CommonGitServiceCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/git/utils/GitAnalyticsUtils.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/CompareDslActionDTO.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/GitDeployKeyGenerator.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/ce/bridge/BridgeUpdate.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration003AddInstanceNameToTenantConfiguration.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/CurlImporterServiceCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/MockDataServiceCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UsagePulseServiceCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/CreateDBTablePageSolutionCEImpl.java (1 hunks)
  • app/server/appsmith-server/src/test/java/com/appsmith/server/git/CommonGitServiceCETest.java (1 hunks)
  • app/server/appsmith-server/src/test/java/com/appsmith/server/git/ops/GitCommitTests.java (1 hunks)
  • app/server/appsmith-server/src/test/java/com/appsmith/server/git/ops/GitDiscardTests.java (1 hunks)
  • app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java (1 hunks)
  • app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/CreateDBTablePageSolutionTests.java (1 hunks)
✅ Files skipped from review due to trivial changes (36)
  • app/server/appsmith-plugins/elasticSearchPlugin/src/main/java/com/external/plugins/ElasticSearchPlugin.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UsagePulseServiceCEImpl.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration003AddInstanceNameToTenantConfiguration.java
  • app/server/appsmith-plugins/redshiftPlugin/src/main/java/com/external/utils/RedshiftDatasourceUtils.java
  • app/server/appsmith-plugins/databricksPlugin/src/main/java/com/external/plugins/DatabricksPlugin.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ExecutableDependencyEdge.java
  • app/server/appsmith-plugins/pom.xml
  • app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomFormLoginServiceCEImpl.java
  • app/server/appsmith-server/src/test/java/com/appsmith/server/git/ops/GitDiscardTests.java
  • app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/utils/OracleDatasourceUtils.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/SegmentConfig.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/CompareDslActionDTO.java
  • app/server/appsmith-server/src/test/java/com/appsmith/server/git/ops/GitCommitTests.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/MockDataServiceCEImpl.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/CurlImporterServiceCEImpl.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/CreateDBTablePageSolutionCEImpl.java
  • app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/CreateDBTablePageSolutionTests.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/GitDeployKeyGenerator.java
  • app/server/appsmith-plugins/amazons3Plugin/src/main/java/com/external/utils/DatasourceUtils.java
  • app/server/appsmith-plugins/redisPlugin/src/main/java/com/external/utils/RedisURIUtils.java
  • app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ExecutionDependencyEdge.java
  • app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/utils/OracleExecuteUtils.java
  • app/server/appsmith-plugins/redshiftPlugin/src/main/java/com/external/plugins/RedshiftPlugin.java
  • app/server/appsmith-plugins/snowflakePlugin/src/main/java/com/external/utils/SnowflakeKeyUtils.java
  • app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java
  • app/server/appsmith-plugins/oraclePlugin/src/main/java/com/external/plugins/OraclePlugin.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/ce/bridge/BridgeUpdate.java
  • app/server/appsmith-plugins/smtpPlugin/src/main/java/com/external/plugins/SmtpPlugin.java
  • app/server/appsmith-server/src/test/java/com/appsmith/server/git/CommonGitServiceCETest.java
  • app/server/appsmith-server/src/main/java/com/appsmith/server/git/common/CommonGitServiceCEImpl.java
  • app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java
  • app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java
  • app/server/appsmith-plugins/redisPlugin/src/main/java/com/external/plugins/RedisPlugin.java
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/server/appsmith-interfaces/pom.xml
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: nidhi-nair
PR: appsmithorg/appsmith#29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: The `updateJsLibsInContext` method in the `ApplicationJsLibServiceCEImpl` class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.
Learnt from: nidhi-nair
PR: appsmithorg/appsmith#29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The `updateJsLibsInContext` method in the `ApplicationJsLibServiceCEImpl` class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.
Learnt from: brayn003
PR: appsmithorg/appsmith#40462
File: app/client/src/instrumentation/index.ts:0-0
Timestamp: 2025-04-29T09:12:14.552Z
Learning: Only comment on files that are directly related to the PR's objectives, even if other files appear in the diff. For PR #40462, the focus is on the import override feature for artifacts, not on instrumentation or telemetry files.
Learnt from: Aishwarya-U-R
PR: appsmithorg/appsmith#29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: Aishwarya-U-R
PR: appsmithorg/appsmith#29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-10-08T15:32:39.374Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: sharat87
PR: appsmithorg/appsmith#30252
File: deploy/docker/fs/usr/lib/python3/dist-packages/supervisor/appsmith_supervisor_stdout.py:21-29
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The user has confirmed that the suggested changes to handle potential exceptions and improve the robustness of the `main` function in `appsmith_supervisor_stdout.py` are acceptable.
Learnt from: CR
PR: appsmithorg/appsmith#0
File: .cursor/rules/README.md:0-0
Timestamp: 2025-07-21T07:25:06.064Z
Learning: Pull request titles must follow semantic conventions as described in 'semantic-pr.md'
Learnt from: CR
PR: appsmithorg/appsmith#0
File: .cursor/rules/index.mdc:0-0
Timestamp: 2025-07-21T07:25:40.986Z
Learning: Pull request titles must follow the Conventional Commits specification (e.g., type(scope): description)
app/server/appsmith-server/src/main/java/com/appsmith/server/git/utils/GitAnalyticsUtils.java (5)

Learnt from: sharat87
PR: #33602
File: app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/BaseAppsmithRepositoryCEImpl.java:462-473
Timestamp: 2024-10-08T15:32:39.374Z
Learning: The codebase has mechanisms to gracefully handle null values, making the use of Optional for AclPermission unnecessary in certain contexts. This is leveraged by replacing Optional.empty() with null in method signatures where null is already handled gracefully.

Learnt from: abhvsn
PR: #36596
File: app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java:475-475
Timestamp: 2024-10-04T05:51:15.138Z
Learning: In app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java, the variable newsletterSignedUpUserEmail is always expected to be non-null because the user's email is always present in the user object, so an additional null check is unnecessary.

Learnt from: brayn003
PR: #38171
File: app/client/src/git/components/DefaultBranch/DefaultBranchCE.tsx:1-14
Timestamp: 2024-12-15T17:45:48.303Z
Learning: In app/client/src/git/components/DefaultBranch/DefaultBranchCE.tsx, the feature flag check is performed at a higher level, so it's acceptable to have isGitProtectedFeatureLicensed={false} in this component.

Learnt from: brayn003
PR: #38088
File: app/client/src/git/components/GitContextProvider/hooks/useGitBranches.ts:40-43
Timestamp: 2024-12-11T08:25:39.197Z
Learning: In app/client/src/git/components/GitContextProvider/hooks/useGitBranches.ts, the useMemo hook includes dependencies artifactType and baseArtifactId in its dependency array.

Learnt from: brayn003
PR: #38563
File: app/client/src/git/components/QuickActions/index.tsx:34-34
Timestamp: 2025-01-09T15:17:04.536Z
Learning: In Git-related components, isStatusClean with a default value of true is used to determine the initial loading state, rather than indicating the presence of uncommitted changes.

app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java (9)

Learnt from: sondermanish
PR: #36413
File: app/server/appsmith-server/src/main/java/com/appsmith/server/imports/internal/ImportServiceCEImpl.java:514-518
Timestamp: 2024-10-08T15:32:34.114Z
Learning: In the ImportServiceCEImpl class, when throwing new AppsmithException instances, avoid adding the original Throwable as the cause due to messaging constraints.

Learnt from: sondermanish
PR: #36413
File: app/server/appsmith-server/src/main/java/com/appsmith/server/imports/internal/ImportServiceCEImpl.java:514-518
Timestamp: 2024-09-20T07:55:30.235Z
Learning: In the ImportServiceCEImpl class, when throwing new AppsmithException instances, avoid adding the original Throwable as the cause due to messaging constraints.

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: The updateJsLibsInContext method in the ApplicationJsLibServiceCEImpl class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The updateJsLibsInContext method in the ApplicationJsLibServiceCEImpl class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.

Learnt from: abhvsn
PR: #36596
File: app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java:475-475
Timestamp: 2024-10-04T05:51:15.138Z
Learning: In app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java, the variable newsletterSignedUpUserEmail is always expected to be non-null because the user's email is always present in the user object, so an additional null check is unnecessary.

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:24-24
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The change from private to protected for the applicationService field in ApplicationJsLibServiceCEImpl class was confirmed to be intentional by the user nidhi-nair for subclass access.

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:24-24
Timestamp: 2024-10-08T15:32:34.115Z
Learning: The change from private to protected for the applicationService field in ApplicationJsLibServiceCEImpl class was confirmed to be intentional by the user nidhi-nair for subclass access.

Learnt from: NilanshBansal
PR: #35680
File: app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java:779-789
Timestamp: 2024-10-08T15:32:34.114Z
Learning: In the deepCopyActionConfiguration method of ActionExecutionSolutionCEImpl, if a JsonProcessingException occurs, the object can remain null as it is only logged for metrics purposes, and throwing an exception is not necessary.

Learnt from: NilanshBansal
PR: #35680
File: app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java:779-789
Timestamp: 2024-08-14T19:35:52.102Z
Learning: In the deepCopyActionConfiguration method of ActionExecutionSolutionCEImpl, if a JsonProcessingException occurs, the object can remain null as it is only logged for metrics purposes, and throwing an exception is not necessary.

app/server/appsmith-server/pom.xml (3)

Learnt from: sharat87
PR: #37341
File: deploy/docker/base.dockerfile:49-50
Timestamp: 2024-11-12T14:29:18.087Z
Learning: In the Appsmith project, avoid pinning the minor Node.js version in Dockerfiles, aligning with the Node.js engine specified in src/client/package.json as ^20.11.1.

Learnt from: sondermanish
PR: #36413
File: app/server/appsmith-server/src/main/java/com/appsmith/server/imports/internal/ImportServiceCEImpl.java:514-518
Timestamp: 2024-10-08T15:32:34.114Z
Learning: In the ImportServiceCEImpl class, when throwing new AppsmithException instances, avoid adding the original Throwable as the cause due to messaging constraints.

Learnt from: sondermanish
PR: #36413
File: app/server/appsmith-server/src/main/java/com/appsmith/server/imports/internal/ImportServiceCEImpl.java:514-518
Timestamp: 2024-09-20T07:55:30.235Z
Learning: In the ImportServiceCEImpl class, when throwing new AppsmithException instances, avoid adding the original Throwable as the cause due to messaging constraints.

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: perform-test / rts-build / build
  • GitHub Check: perform-test / client-build / client-build
  • GitHub Check: perform-test / server-build / server-unit-tests
  • GitHub Check: server-unit-tests / server-unit-tests
  • GitHub Check: server-spotless / spotless-check
🔇 Additional comments (5)
app/server/appsmith-plugins/arangoDBPlugin/src/main/java/com/external/plugins/ArangoDBPlugin.java (1)

30-30: LGTM! Import update aligns with Commons Lang 3 upgrade.

The import change from org.apache.commons.lang.ObjectUtils to org.apache.commons.lang3.ObjectUtils is correct and the defaultIfNull method usage on lines 192 and 408 remains fully compatible.

app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/utils/MssqlExecuteUtils.java (1)

3-3: LGTM! Import update is consistent with the Commons Lang 3 upgrade.

The import change to org.apache.commons.lang3.ObjectUtils is correct and maintains compatibility with the existing defaultIfNull usage on lines 80-81.

app/server/appsmith-server/pom.xml (1)

259-264: LGTM: Proper exclusions for Commons Lang upgrade

The exclusions for commons-lang:commons-lang in both pf4j-spring and pf4j dependencies correctly prevent classpath conflicts during the upgrade to Commons Lang 3.x. This ensures clean dependency management.

Also applies to: 271-276

app/server/appsmith-server/src/main/java/com/appsmith/server/git/utils/GitAnalyticsUtils.java (1)

26-26: LGTM: Clean import update for Commons Lang 3.x

The import update from org.apache.commons.lang.ObjectUtils to org.apache.commons.lang3.ObjectUtils is correct and maintains identical functionality for the defaultIfNull method.

app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java (1)

61-61: LGTM: Proper import updates for Commons Lang 3.x

The import updates for ArrayUtils and StringEscapeUtils from org.apache.commons.lang to org.apache.commons.lang3 are correct. The methods used (toString and escapeJava) maintain identical signatures and behavior between library versions.

Also applies to: 63-63

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/update-apache-lang3-mvn-version

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added the skip-changelog Adding this label to a PR prevents it from being listed in the changelog label Jul 30, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e366a39 and 6d3d568.

📒 Files selected for processing (4)
  • app/server/appsmith-interfaces/pom.xml (1 hunks)
  • app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/DatasourceUtils.java (1 hunks)
  • app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HeaderUtils.java (1 hunks)
  • app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HintMessageUtils.java (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: nidhi-nair
PR: appsmithorg/appsmith#29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: The `updateJsLibsInContext` method in the `ApplicationJsLibServiceCEImpl` class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.
Learnt from: nidhi-nair
PR: appsmithorg/appsmith#29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The `updateJsLibsInContext` method in the `ApplicationJsLibServiceCEImpl` class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.
Learnt from: brayn003
PR: appsmithorg/appsmith#40462
File: app/client/src/instrumentation/index.ts:0-0
Timestamp: 2025-04-29T09:12:14.552Z
Learning: Only comment on files that are directly related to the PR's objectives, even if other files appear in the diff. For PR #40462, the focus is on the import override feature for artifacts, not on instrumentation or telemetry files.
Learnt from: Aishwarya-U-R
PR: appsmithorg/appsmith#29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-10-08T15:32:39.374Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: Aishwarya-U-R
PR: appsmithorg/appsmith#29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: sharat87
PR: appsmithorg/appsmith#30252
File: deploy/docker/fs/usr/lib/python3/dist-packages/supervisor/appsmith_supervisor_stdout.py:21-29
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The user has confirmed that the suggested changes to handle potential exceptions and improve the robustness of the `main` function in `appsmith_supervisor_stdout.py` are acceptable.
app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HeaderUtils.java (2)

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: The updateJsLibsInContext method in the ApplicationJsLibServiceCEImpl class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The updateJsLibsInContext method in the ApplicationJsLibServiceCEImpl class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.

app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HintMessageUtils.java (5)

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: The updateJsLibsInContext method in the ApplicationJsLibServiceCEImpl class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.

Learnt from: nidhi-nair
PR: #29372
File: app/server/appsmith-server/src/main/java/com/appsmith/server/applications/jslibs/ApplicationJsLibServiceCEImpl.java:51-56
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The updateJsLibsInContext method in the ApplicationJsLibServiceCEImpl class was mistakenly referred to as a new method in a previous comment. It is important to accurately assess the context of changes in a pull request to avoid misrepresenting the nature of the code modifications.

Learnt from: sondermanish
PR: #36413
File: app/server/appsmith-server/src/main/java/com/appsmith/server/imports/internal/ImportServiceCEImpl.java:514-518
Timestamp: 2024-10-08T15:32:34.114Z
Learning: In the ImportServiceCEImpl class, when throwing new AppsmithException instances, avoid adding the original Throwable as the cause due to messaging constraints.

Learnt from: sondermanish
PR: #36413
File: app/server/appsmith-server/src/main/java/com/appsmith/server/imports/internal/ImportServiceCEImpl.java:514-518
Timestamp: 2024-09-20T07:55:30.235Z
Learning: In the ImportServiceCEImpl class, when throwing new AppsmithException instances, avoid adding the original Throwable as the cause due to messaging constraints.

Learnt from: trishaanand
PR: #38359
File: app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOAuth2UserServiceCEImpl.java:78-82
Timestamp: 2024-12-25T06:50:40.623Z
Learning: In CustomOAuth2UserServiceCEImpl, the second repository call for finding users by case-insensitive email is needed because older users might have uppercase or mixed-case emails, while new users have emails stored in lowercase.

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: perform-test / rts-build / build
  • GitHub Check: perform-test / client-build / client-build
  • GitHub Check: perform-test / server-build / server-unit-tests
  • GitHub Check: server-unit-tests / server-unit-tests
  • GitHub Check: server-spotless / spotless-check
🔇 Additional comments (3)
app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HeaderUtils.java (1)

9-9: Import migration looks good

org.apache.commons.lang3.StringUtils is the correct replacement; no other changes required in this class.

app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/DatasourceUtils.java (1)

7-7: Import migration looks good

StringUtils now points to lang3; all method calls (isEmpty, etc.) remain valid.

app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/HintMessageUtils.java (1)

9-9: Import migration looks good

Nothing else to change in this file.

Comment on lines +180 to +182
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.18.0</version>
Copy link
Contributor

@coderabbitai coderabbitai bot Jul 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify that no modules still rely on commons-lang v2.x

The new commons-lang3 dependency is correctly added, but if any other module still brings in the old commons-lang:commons-lang 2.x JAR you’ll get both versions on the class-path, leading to subtle ClassCastExceptions.
Please run a quick search across the repo and PR branch to confirm every occurrence of org.apache.commons.lang. has been migrated.


🏁 Script executed:

#!/usr/bin/env bash
# Find any remaining imports that reference the deprecated commons-lang 2.x package
rg --no-heading --line-number --fixed-strings 'org.apache.commons.lang.' \
   | grep -v 'org.apache.commons.lang3' || true

Length of output: 6608


Multiple commons-lang v2.x imports detected

A search found 40+ occurrences of org.apache.commons.lang.* imports across both plugin and server modules. These need to be migrated to the org.apache.commons.lang3 equivalents to avoid having both v2.x and v3.x on the classpath:

• appsmith-plugins (snowflake, smtp, redis, redshift, oracle, postgres, mysql, mssql, arangoDB, elasticSearch, databricks, amazons3)
• appsmith-server main code (services, solutions, migrations, helpers, configurations, domains)
• appsmith-server tests (CreateDBTablePageSolutionTests, ImportServiceTests, GitDiscardTests, GitCommitTests, CommonGitServiceCETest)

Please update all imports, e.g.:

- import org.apache.commons.lang.StringUtils;
+ import org.apache.commons.lang3.StringUtils;

…and similarly for ObjectUtils, WordUtils, ArrayUtils, StringEscapeUtils, NotImplementedException, and builder classes.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In app/server/appsmith-interfaces/pom.xml around lines 180 to 182, the project
currently includes dependencies on both commons-lang v2.x and v3.x, causing
conflicts. To fix this, remove all dependencies on commons-lang v2.x and update
all import statements in the entire codebase (plugins, server modules, and
tests) from `org.apache.commons.lang.*` to `org.apache.commons.lang3.*`. Also,
update usages of classes like ObjectUtils, WordUtils, ArrayUtils,
StringEscapeUtils, NotImplementedException, and builder classes to their v3
equivalents to ensure compatibility and avoid classpath conflicts.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nsarupr Can we update all the references mentioned here?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

trishaanand
trishaanand previously approved these changes Jul 31, 2025
Copy link
Contributor

@abhvsn abhvsn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nsarupr this looks good can you also CI with all tag once?

@nsarupr nsarupr added ok-to-test Required label for CI and removed ok-to-test Required label for CI labels Jul 31, 2025
@nsarupr nsarupr merged commit eaea235 into release Jul 31, 2025
185 of 187 checks passed
@nsarupr nsarupr deleted the chore/update-apache-lang3-mvn-version branch July 31, 2025 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Required label for CI skip-changelog Adding this label to a PR prevents it from being listed in the changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants