Skip to content

fix(sitemanage): Xlint this-escape DTO/parser + serial-field residual (#3061) - #3106

Merged
natechadwick merged 2 commits into
mainfrom
fix/issue-3061-sitemanage-xlint-residual
Aug 12, 2026
Merged

natechadwick merged 2 commits into
mainfrom
fix/issue-3061-sitemanage-xlint-residual

Conversation

@natechadwick-intsof

Copy link
Copy Markdown
Collaborator

Summary

Partial Xlint cleanup for sitemanage residual issue #3061 (parent module issue #2032, monorepo tracker #2200). After service/listener this-escape (#2999 / PR #3060), this PR clears the DTO/parser this-escape leftovers and the serial-field non-collection residual.

Main changes

  • this-escape (5→0): direct field seeds on PSUnusedAssetSummary, PSWidgetBuilderSummaryData / PSWidgetBuilderDefinitionData; lazy parser factory in PSRegionParserAdapter; seed rootName on PSFoldersPathItemService (missed leaf from [8.2] sitemanage Xlint residual after this-escape DTO batch (#2032 / #2980) #2999)
  • serial-field (14→0): Serializable on nested data holders (PSMapWrapper, PSPubInfo, PSRenderLink, PSResourceLocation, widget nested prefs/content/code); transient for runtime-only refs (relatedObject, JCR Node, servlet collaborator, CMS PSObjectAcl); cycle exception keeps in-process definitions transient + serializable id list for messages; justified @SuppressWarnings("serial") on JPA PropertyId only

Tests

  • Extended PSThisEscapeDtoConstructorTest (+3): widget builder DAO seeds, null DAO, region parser adapter
  • New PSSerialFieldResidualTest (7): Serializable types, transient field guards, Java serialization round-trips

Inventory (main-source)

Metric Before After
this-escape 5 0
serial-field 14 0
total Xlint warnings (approx) 57 ~37

Residual

Misc main-source Xlint (static qualification, Hibernate Session.get deprecation, equals/hashCode, fall-through, redundant cast, unchecked, …) and test-source Xlint: filed as follow-up under #2032 / #2200.

Test plan

  • cd projects/sitemanage && ../../mvnw.cmd clean install — BUILD SUCCESS
  • Tests run: 1082, Failures: 0, Errors: 0, Skipped: 125
  • Focused: PSThisEscapeDtoConstructorTest, PSSerialFieldResidualTest, PSFoldersPathItemServiceTest, PSThisEscapeServiceListenerTest — green
  • C2: no types made final/sealed; no public signature removals — greps N/A

Product documentation

  • N/A — pure compiler lint tech debt; no operator/user/API surface change

Gates / evidence (C3)

  • modules_built: projects/sitemanage
  • build_evidence: cd projects/sitemanage && ../../mvnw.cmd clean install → BUILD SUCCESS; Tests run: 1082, Failures: 0, Errors: 0, Skipped: 125
  • downstream_checked: none (C2 did not apply — no final/signature/package API shape changes)

Operator

Operator: Grok: night-issue-prs (model grok-4.5)

Parent: #2032 / #2200
Fixes #3061 (this-escape DTO/parser + serial-field residual).

Co-Authored by Grok Build using grok-4.5 with agent main.

…#3061)

Clear remaining main-source this-escape (5→0) and serial-field (14→0) in
projects/sitemanage after #2999/PR#3060. Direct field seeds for DTO/path ctors,
lazy region parser factory, Serializable nested data holders, transient runtime
refs. Tests: PSThisEscapeDtoConstructorTest + PSSerialFieldResidualTest.
clean install green (1082 tests).

Fixes #3061
Parent: #2032 / #2200

> Co-Authored by Grok Build using grok-4.5 with agent main.
@natechadwick-intsof

Copy link
Copy Markdown
Collaborator Author

Residual for remaining sitemanage main-source misc Xlint (~37) + later test-source: #3107

Co-Authored by Grok Build using grok-4.5 with agent main.

Comment thread projects/sitemanage/src/main/java/com/percussion/share/data/PSMapWrapper.java Outdated
@kilo-code-bot

kilo-code-bot Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (7 files)
  • projects/sitemanage/src/main/java/com/percussion/assetmanagement/service/impl/PSAssetUploadServlet.java
  • projects/sitemanage/src/main/java/com/percussion/pagemanagement/data/PSWidgetDefinition.java
  • projects/sitemanage/src/main/java/com/percussion/pagemanagement/parser/PSRegionParserAdapter.java
  • projects/sitemanage/src/main/java/com/percussion/pagemanagement/service/impl/PSResourceDefinitionUtils.java
  • projects/sitemanage/src/main/java/com/percussion/share/data/PSMapWrapper.java
  • projects/sitemanage/src/main/java/com/percussion/sitemanage/data/PSPubInfo.java
  • projects/sitemanage/src/test/java/com/percussion/share/data/PSSerialFieldResidualTest.java
Previous Review Summary (commit f227c1d)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit f227c1d)

Status: 6 Issues Found | Recommendation: Address before merge

Overview

Severity Count
WARNING 3
SUGGESTION 3
Issue Details (click to expand)

WARNING

File Line Issue
projects/sitemanage/src/main/java/com/percussion/pagemanagement/parser/PSRegionParserAdapter.java 39 Lazy init without synchronization is not thread-safe; concurrent parse() calls could create multiple PSRegionParser instances
projects/sitemanage/src/main/java/com/percussion/pagemanagement/service/impl/PSResourceDefinitionUtils.java 110 cyclicalResources is now transient, so getCyclicalResources() returns null after Java deserialization
projects/sitemanage/src/main/java/com/percussion/sitemanage/data/PSPubInfo.java 31 PSPubInfo now implements Serializable and holds AWS credentials (accessKey, secretKey, arnRole); previously-failing credential serialization now succeeds
projects/sitemanage/src/test/java/com/percussion/share/data/PSSerialFieldResidualTest.java 89 Test round-trips PSPubInfo with AWS credential fields through Java serialization

SUGGESTION

File Line Issue
projects/sitemanage/src/main/java/com/percussion/assetmanagement/service/impl/PSAssetUploadServlet.java 187 transient on assetCreator is misleading because PSAssetUploadServlet extends HttpServlet (not Serializable)
projects/sitemanage/src/main/java/com/percussion/share/data/PSMapWrapper.java 34 Field type narrowed to concrete HashMap; getter already returns interface type
projects/sitemanage/src/main/java/com/percussion/pagemanagement/data/PSWidgetDefinition.java 848 WidgetPrefs.icon field type narrowed to ArrayList<Icon>; risks ClassCastException if a different List subtype is assigned
Files Reviewed (7 files with issues)
  • projects/sitemanage/src/main/java/com/percussion/pagemanagement/parser/PSRegionParserAdapter.java - 1 WARNING
  • projects/sitemanage/src/main/java/com/percussion/pagemanagement/service/impl/PSResourceDefinitionUtils.java - 1 WARNING
  • projects/sitemanage/src/main/java/com/percussion/sitemanage/data/PSPubInfo.java - 1 WARNING
  • projects/sitemanage/src/test/java/com/percussion/share/data/PSSerialFieldResidualTest.java - 1 WARNING
  • projects/sitemanage/src/main/java/com/percussion/assetmanagement/service/impl/PSAssetUploadServlet.java - 1 SUGGESTION
  • projects/sitemanage/src/main/java/com/percussion/share/data/PSMapWrapper.java - 1 SUGGESTION
  • projects/sitemanage/src/main/java/com/percussion/pagemanagement/data/PSWidgetDefinition.java - 1 SUGGESTION

Fix these issues in Kilo Cloud


Reviewed by step-3.7-flash · Input: 55.5K · Output: 4.5K · Cached: 238.5K

Review guidance: REVIEW.md from base branch main

- Thread-safe double-checked lazy PSRegionParserAdapter
- getCyclicalResources never null after deserial
- PSPubInfo credential fields transient; test asserts null after round-trip
- Drop misleading transient on servlet assetCreator
- PSMapWrapper / WidgetPrefs.icon use interface field types

> Co-Authored by Grok CLI using grok with agent overnight-pr-followup.
@natechadwick
natechadwick merged commit c7d77df into main Aug 12, 2026
6 checks passed
@natechadwick
natechadwick deleted the fix/issue-3061-sitemanage-xlint-residual branch August 12, 2026 04:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

model:grok-4.5 Grok 4.5 model operator:grok Changes authored by Grok operator:night-issue-prs night-issue-prs workflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[8.2] sitemanage Xlint residual after service/listener this-escape (#2032 / #2999)

2 participants