[ 
https://issues.apache.org/jira/browse/WW-5683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5683:
------------------------------
    Priority: Minor  (was: Major)

> Migrate tests off the deprecated SecurityMemberAccess configuration setters
> ---------------------------------------------------------------------------
>
>                 Key: WW-5683
>                 URL: https://issues.apache.org/jira/browse/WW-5683
>             Project: Struts 2
>          Issue Type: Improvement
>            Reporter: Lukasz Lenart
>            Priority: Minor
>             Fix For: 7.4.0
>
>
> WW-5675 moved OGNL security configuration parsing into a container-singleton 
> bean, {{SecurityMemberAccessConfig}}, and deprecated the eleven configuration 
> setters left on {{SecurityMemberAccess}} with {{@Deprecated(since = "7.4.0", 
> forRemoval = true)}}.
> Roughly 110 call sites across {{core}} and the {{spring}} and {{cdi}} plugins 
> still call those setters directly — almost all in tests, to construct a 
> {{SecurityMemberAccess}} in a particular configuration without going through 
> a container. Because the annotation carries {{forRemoval = true}}, every one 
> of them now trips SonarCloud rule {{java:S5738}} ("Remove this call to a 
> deprecated method, it has been marked for removal").
> On the WW-5675 pull request that is _69 new Sonar issues_, 67 of them in 
> {{SecurityMemberAccessTest}} alone. The quality gate still passes, but the 
> noise is real and it will persist on every subsequent PR that touches these 
> files.
> h2. Scope
> Migrate the call sites to configure a {{SecurityMemberAccessConfig}} and 
> inject it via {{useConfig}}, rather than calling the deprecated setters on 
> the instance.
> Affected files, by issue count on the WW-5675 PR:
> * 
> {{core/src/test/java/org/apache/struts2/ognl/SecurityMemberAccessTest.java}} 
> — 67
> * 
> {{core/src/test/java/org/apache/struts2/ognl/SecurityMemberAccessConfigSharingTest.java}}
>  — 1
> * 
> {{core/src/test/java/org/apache/struts2/ognl/SecurityMemberAccessPackageMatchingTest.java}}
>  — 1
> Plus the direct {{new SecurityMemberAccess(null, null)}} constructions in 
> {{plugins/spring}} and {{plugins/cdi}} proxy tests, which do not currently 
> trip the rule but follow the same pattern.
> h2. Notes
> Two behaviours must survive the migration:
> * {{useAllowStaticFieldAccess(false)}} has a side effect — it also adds 
> {{java.lang.Class}} to the excluded classes.
> * The excluded-set setters accumulate onto the current value rather than 
> assigning. That commutativity is what makes them safe against the container's 
> unspecified {{getDeclaredMethods()}} injection order, and 
> {{SecurityMemberAccessConfigTest.setterOrderDoesNotAffectExcludedClasses}} 
> pins it.
> At least one test must keep exercising the deprecated setters themselves 
> while they still exist, so that their retained per-instance semantics stay 
> covered — that is what 
> {{SecurityMemberAccessConfigSharingTest.testDeprecatedSetterDoesNotLeakToSiblings}}
>  does today.
> This is a test-only refactor with no production impact, so it can land in any 
> 7.x release. It is prerequisite work for WW-5682, which deletes the setters 
> in 8.0.0.
> h2. Related
> * WW-5675 — deprecated the setters
> * WW-5682 — removes them in 8.0.0



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to