Skip to content

chore: bump resourceServerVersion 1.5.2 → 1.5.3#2964

Merged
bjagg merged 3 commits into
uPortal-Project:masterfrom
bjagg:chore/bump-resource-server-1.5.3
Apr 29, 2026
Merged

chore: bump resourceServerVersion 1.5.2 → 1.5.3#2964
bjagg merged 3 commits into
uPortal-Project:masterfrom
bjagg:chore/bump-resource-server-1.5.3

Conversation

@bjagg

@bjagg bjagg commented Apr 29, 2026

Copy link
Copy Markdown
Member

Summary

Pre-5.17.3-release bump: consume the just-released resource-server:1.5.3 instead of 1.5.2.

Why

Per docs/developer/other/RELEASE.md:

`resourceServerVersion` - Should use the latest version in uPortal, and should generally stay at `1.0.48` in uPortal-start.

resource-server:1.5.3 was released to Maven Central earlier today. Bumping here so the upcoming uPortal 5.17.3 release consumes the latest.

What's in 1.5.3 vs 1.5.2

  • uportal-portlet-parent:44 → :48 plus pruning of redundant <dependencyManagement> entries inherited from the new parent
  • Hygiene bumps: commons-codec, commons-io, commons-compress, maven-plugin-api, maven-checkstyle-plugin, maven-javadoc-plugin
  • Frontend/CI: esbuild, foundation (demo HTML), actions/checkout v6, actions/setup-java v5
  • No API changes — drop-in replacement

Test plan

  • CI green

🤖 Generated with Claude Code

bjagg added 3 commits April 28, 2026 17:03
Problem: resource-server 1.5.3 was just released (today), but
uPortal master still pins 1.5.2. Per docs/developer/other/RELEASE.md,
"resourceServerVersion ... Should use the latest version in uPortal."

Goal: consume the just-released resource-server in the upcoming
5.17.3 release.

Changes:
- gradle.properties: resourceServerVersion 1.5.2 → 1.5.3.

Notes: 1.5.3's payload (vs 1.5.2) is uportal-portlet-parent 44 → 48
+ redundant pom-entry cleanup, plus a batch of dep hygiene bumps
(commons-codec/io/compress, maven-plugin-api, checkstyle, javadoc,
esbuild, foundation, actions/checkout, setup-java). No API changes.
… split

Problem: After bumping resourceServerVersion 1.5.2 → 1.5.3, the
:uPortal-webapp:aggregateRespondrSkins task fails with

  NoSuchMethodError: 'java.lang.CharSequence
   org.apache.commons.lang3.StringUtils.getIfEmpty(java.lang.CharSequence,
   java.util.function.Supplier)'
  at org.apache.commons.lang3.SystemProperties.getProperty(...)
  at org.apache.commons.lang3.SystemProperties.getUserName(...)

The cause is a classloader split. resource-server 1.5.3 transitively
brings commons-compress 1.28.0 onto the buildscript classpath, which
in turn pulls commons-lang3 3.18.0. commons-compress 1.28 calls into
commons-lang3 SystemProperties (introduced in 3.13), which itself
calls StringUtils.getIfEmpty(T, Supplier<T>) (added in 3.10).
Gradle 6.9.4 bundles commons-lang3 3.7 on its parent classloader and
that wins the StringUtils class resolution, so the SystemProperties
method body invokes a method that doesn't exist in 3.7. Boom.

Goal: keep aggregateRespondrSkins working without dragging Gradle's
internal lang3 forward (out of scope) and without rolling back the
resource-server release. Side note: uPortal's runtime classpath is
unaffected — this conflict is purely buildscript-scope.

Changes:
- uPortal-webapp/build.gradle: in the buildscript block, force
  commons-compress to commonsCompressVersion (1.27.1) via
  resolutionStrategy. 1.27.x doesn't touch SystemProperties, so the
  classloader split never matters.

Notes: a longer-term cleanup would be to bump Gradle (it ships much
newer commons-lang3 in 7.x+) or replace commons-compress's role here
entirely. For now this is a one-line constraint that keeps the
release moving.
…-io 2.22

Problem: After bumping resource-server to 1.5.3, this test fails
locally and in CI:

  org.apereo.portal.portlet.container.cache.LimitingTeeOutputStreamTest
    > testContentExceedsClearBuffer FAILED
    java.lang.IndexOutOfBoundsException at LimitingTeeOutputStreamTest.java:77

Line 77 was `stream.write(content, 5, content.length)`. With
content.length = 21, that's "write 21 bytes starting at offset 5",
which reads up to byte index 26 in a 21-byte array — invalid per the
OutputStream.write(byte[], int, int) contract.

The bug existed before this PR. resource-server 1.5.3 transitively
bumps commons-io 2.20.0 → 2.22.0, and 2.22's NullOutputStream is
stricter about bounds checking than 2.20's, which is what unmasked
the latent test bug.

Goal: make the test reflect what was clearly intended — write the
remaining 16 bytes after the first 5, exceeding the maxBytes=20
threshold so the limit-reached callback fires.

Changes:
- LimitingTeeOutputStreamTest.java:77: `content.length` →
  `content.length - 5` so the call is in-bounds.

Notes: also folds in the buildscript force from the previous commit
(needed for aggregateRespondrSkins). Together they unblock the
resource-server 1.5.3 bump in this PR. Verified: full
:uPortal-webapp:test now passes (297 / 0 / 78 skipped).
@bjagg bjagg merged commit 8fea974 into uPortal-Project:master Apr 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant