Parse the v3 licenses payload

Parse the v3 payload format into a data object that exposes identifiers and expressions separately. DataObjectFabricator has no v3 branch today and CompressedPackageDataObject#spdx_identifiers assumes flat strings all the way down.

  • A v3-aware data object (PackageDataObjectV3) reading the format the exporter emits: default_licenses is one set and other_licenses is a list of them. A set carries licenses as plain SPDX identifier strings, expressions as raw expression strings, and versions; both lists may be present at once. Implemented as a standalone class rather than a subclass of CompressedPackageDataObject to avoid internal branching on the input type.
  • v3 branch in DataObjectFabricator via the SyncConfiguration#v3? predicate (#611126 (closed))
  • Keep expressions as opaque strings

CompressedPackageDataObject gains a no-op spdx_expressions stub so LicenseIngestionTask can call both methods uniformly.

Dependencies

#606521 (closed) (schema column), #611126 (closed) (v3 predicate and routing)

Key files

  • ee/app/services/package_metadata/package_data_object_v3.rb
  • ee/app/services/package_metadata/data_object_fabricator.rb
  • ee/lib/package_metadata/sync_configuration.rb
  • Exporter schema: data/licenses/v3/license.json
Edited by 🤖 GitLab Bot 🤖