Skip to content

feat(packages): migrate package endpoints to holdingsIQ v2 API#687

Merged
psmagin merged 17 commits into
masterfrom
MODKBEKBJ-804
Jun 29, 2026
Merged

feat(packages): migrate package endpoints to holdingsIQ v2 API#687
psmagin merged 17 commits into
masterfrom
MODKBEKBJ-804

Conversation

@psmagin

@psmagin psmagin commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Purpose

Migrate Package Endpoints to HoldingsIQ v2 API

Approach

  • Use new version of client to utilize new endpoints
  • Update module's API definitions to have new fields in bodies and query params
  • Keep visibilityData for backward compability (will be removed in https://folio-org.atlassian.net/browse/MODKBEKBJ-835)
  • upgrade to junit6

Changes Checklist

  • API Changes: Document any API paths, methods, request or response bodies changed, added, or removed.
  • Database Schema Changes: Indicate any database schema changes and their impact. Confirm that migration scripts were created.
  • Interface Version Changes: Indicate any changes to interface versions.
  • Interface Dependencies: Document added or removed dependencies.
  • Permissions: Document any changes to permissions.
  • Logging: Confirm that logging is appropriately handled.
  • Unit Testing: Confirm that changed classes were covered by unit tests.
  • Integration Testing: Confirm that changed logic was covered by integration tests.
  • Manual Testing: Confirm that changes were tested on local or dev environment.
  • NEWS: Confirm that the NEWS file is updated with relevant information about the changes made in this pull request.

Related Issues

https://folio-org.atlassian.net/browse/MODKBEKBJ-804

psmagin and others added 17 commits June 14, 2026 09:59
- Extract validation into FilterValidators with strategy pattern per RecordType (OCP)
- Move TagFilter/AccessTypeFilter creation to static from() factory methods (SRP)
- Consolidate duplicate validatePackageFilterType/validateTitleFilterType into
  single parameterized validateFilterType method (DRY)
- Rename type-converting getters to explicit resolve*/parse* methods, letting
  Lombok generate raw-value getters for clean separation
- Filter is now a focused data holder with only its own state accessors

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tions

- Filter is now a sealed interface with ProviderFilter, PackageRecordFilter,
  ResourceFilter, and TitleFilter implementations
- Each type carries only its relevant fields (ISP compliance)
- Validation is self-contained per type via FilterValidators
- TagFilter.from() and AccessTypeFilter.from() use pattern matching on
  sealed types instead of RecordType switches
- Removed dead code: prepareFilterForPackage(), prepareFilterForResource(),
  getSortableFilter(), getPackageFilter() helper methods
- Removed FilterValidator strategy interface (no longer needed)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@psmagin psmagin added the ai label Jun 26, 2026
@psmagin psmagin self-assigned this Jun 26, 2026
@sonarqubecloud

Copy link
Copy Markdown

@psmagin psmagin marked this pull request as ready for review June 26, 2026 11:58
@psmagin psmagin requested a review from a team as a code owner June 26, 2026 11:58
@psmagin psmagin merged commit 738bbd8 into master Jun 29, 2026
36 checks passed
@psmagin psmagin deleted the MODKBEKBJ-804 branch June 29, 2026 08:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants