refactor(Discovery): improve proof key extraction robustness #5328
+125
−60
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
tldr: Additional error checking and logging for increased robustness and troubleshooting ease; refactoring to generalize proof key extraction (common code). Oh, and adds request-level caching.
Configuration validation:
getDiscoveryEndpoint()now checks if thewopi_urlconfiguration is present; logs an error and throws aRuntimeExceptionif missing, preventing silent misconfiguration.Robust proof key extraction:
extractProofKey()now explicitly checks that the XPath result is an array and that the required attribute exists before dereferencing. This prevents unexpected warnings or errors if the XML is malformed or attributes are missing.Reduction of magic strings:
All XPath expressions and attribute names are now class constants for easier maintenance and error prevention.
Enhanced documentation and comments:
Improved docblocks and comments clarify method purposes and implementation details.
Improved logging:
Increased logging coverage for error and debug cases, aiding diagnostics and transparency.
Caching and future readiness:
The parsed discovery XML is cached per request, and the code is prepared for optional future XML namespace handling.
This refactor improves resilience and maintainability of the WOPI discovery proof key handling logic.
TODO
Checklist