IP Library Granted Patent US 12,596,536
Granted Patent B2
US 12,596,536 · App. 17/953,576 · Granted Apr 7, 2026

Dependency analysis through class file manipulation

Inventor: Stuart Wade Douglas (Canberra, AU)
Assignee: Red Hat, Inc.
G06F8/433G06F8/71G06F16/113
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,596,536
App. No.
17/953,576
Granted
Apr 7, 2026
Kind
B2
Abstract

A processing device may receive a request for dependency information indicative of one or more class files included in an archive file. The processing device may fetch the archive file from an upstream source, where the archive file may be associated with the dependency information indicative of the one or more class files. The processing device may apply a transformation to the archive file to indicate provenance information for each of the one or more class files included in the archive file. The archive file may be incorporated in an application or a library, such that a scan of the application or the library may be performed for the provenance information associated with the archive file. An indication of each of the one or more class files included in the archive file may be output in view of the provenance information.

Claims (35)

1 . A method comprising:

receiving a request for dependency information indicative of one or more class files included in an archive file;

fetching the archive file from an upstream source, the archive file associated with the dependency information indicative of the one or more class files;

executing, by a processing device, a transformation process to the archive file, the transformation process being applied to indicate provenance information for each of the one or more class files included in the archive file, wherein the provenance information for each of the one or more class files included in the archive file corresponds to bytecode metadata, wherein the bytecode metadata is indicative of the provenance information embedded within the one or more class files;

scanning the archive file for the bytecode metadata to determine specific class files of the one or more class files utilized to build the archive file, wherein the bytecode metadata provides for a tracking of the one or more class files utilized to build the archive file; and

outputting the archive file to a build module in view of the transformation process that indicates the provenance information for each of the one or more class files included in the archive file.

2 . The method of claim 1 , wherein executing the transformation process to the archive file further comprises:

encoding the provenance information within the archive file for each of the one or more class files included in the archive file.

3 . The method of claim 1 , wherein the provenance information is indicated for each of the one or more class files in view of at least one of an annotation or an unreferenced object included in a constant pool.

4 . The method of claim 1 , wherein the provenance information indicates at least one of a group artifact version (GAV) of a module that includes the one or more class files, a repository of the one or more class files, a dependency associated with the one or more class files, or build information of the module that includes the one or more class files.

5 . The method of claim 1 , wherein executing the transformation process to the archive file transforms the archive file into a modified archive file having the provenance information for each of the one or more class files included in the modified archive file.

6 . The method of claim 5 , wherein the modified archive file is incorporated in a container.

7 . A system comprising:

a memory; and

a processing device, operatively coupled to the memory, to:

receive a request for dependency information indicative of one or more class files included in an archive file;

fetch the archive file from an upstream source, the archive file associated with the dependency information indicative of the one or more class files;

execute a transformation process to the archive file, the transformation process being applied to indicate provenance information for each of the one or more class files included in the archive file, wherein the provenance information for each of the one or more class files included in the archive file corresponds to bytecode metadata, wherein the bytecode metadata is indicative of the provenance information embedded within the one or more class files;

scan the archive file for the bytecode metadata to determine specific class files of the one or more class files utilized to build the archive file, wherein the bytecode metadata provides for a tracking of the one or more class files utilized to build the archive file; and

output the archive file to a build module in view of the transformation process that indicates the provenance information for each of the one or more class files included in the archive file.

8 . The system of claim 7 , wherein to execute the transformation process to the archive file the processing device is further to:

encode the provenance information within the archive file for each of the one or more class files included in the archive file.

9 . The system of claim 7 , wherein the provenance information is indicated for each of the one or more class files in view of at least one of an annotation or an unreferenced object included in a constant pool.

10 . The system of claim 7 , wherein the provenance information indicates at least one of a group artifact version (GAV) of a module that includes the one or more class files, a repository of the one or more class files, a dependency associated with the one or more class files, or build information of the module that includes the one or more class files.

11 . The system of claim 7 , wherein execution of the transformation process to the archive file transforms the archive file into a modified archive file having the provenance information for each of the one or more class files included in the modified archive file.

12 . The system of claim 11 , wherein the modified archive file is incorporated in a container.

13 . A non-transitory computer-readable storage medium including instructions that, when executed by a processing device, cause the processing device to:

receive a request for dependency information indicative of one or more class files included in an archive file;

fetch the archive file from an upstream source, the archive file associated with the dependency information indicative of the one or more class files;

execute, by the processing device, a transformation process to the archive file, the transformation process being applied to indicate provenance information for each of the one or more class files included in the archive file, wherein the provenance information for each of the one or more class files included in the archive file corresponds to bytecode metadata, wherein the bytecode metadata is indicative of the provenance information embedded within the one or more class files;

scan the archive file for the bytecode metadata to determine specific class files of the one or more class files utilized to build the archive file, wherein the bytecode metadata provides for a tracking of the one or more class files utilized to build the archive file; and

output the archive file to a build module in view of the transformation process that indicates the provenance information for each of the one or more class files included in the archive file.

14 . The non-transitory computer-readable storage medium of claim 13 , wherein to execute the transformation process to the archive file the processing device is further to:

encode the provenance information within the archive file for each of the one or more class files included in the archive file.

15 . The non-transitory computer-readable storage medium of claim 13 , wherein the provenance information is indicated for each of the one or more class files in view of at least one of an annotation or an unreferenced object included in a constant pool.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2022
From: DOUGLAS, STUART WADE
To: RED HAT, INC.
Reel/Frame 061225/0412 →
Continuity (1)
Related Publication 20240103820A1 · Mar 28, 2024
References Cited (14)
US 10102212B2 · Zizka et al. · 2018 [cited by applicant]
US 10783243B2 · Loch · 2020 [cited by examiner]
US 11347498B2 · Elias et al. · 2022 [cited by applicant]
US 20090037577A1 · Theobald · 2009 [cited by examiner]
US 20180129712A1 · Mankovskii · 2018 [cited by applicant]
US 20210405982A1 · Douglas et al. · 2021 [cited by applicant]
US 20220197998A1 · Barber et al. · 2022 [cited by applicant]
US 20240069930A1 · Veres · 2024 [cited by examiner]
Donohue, Tom. “How to find out where a Maven dependency comes from,” Sep. 4, 2022, pp. 1-11, XP093071765, Retrieved from the Internet: URL: https://www.tutorialworks.com/maven-find-transitive-dependencies/ [retrieved on… [cited by applicant]
Extended European Search Report of Application No. 22214220.0, mailed Aug. 17, 2023, 12 pages. [cited by applicant]
Examination Report from related EP Application No. 22 214 220.0-1203 mailed Oct. 24, 2024. (5 pages). [cited by applicant]
Anonymous et al.: “Apache Maven—Wikipedia”, Aug. 18, 2022 (Aug. 18, 2022), pp. 1-7, XP93071177, Retrieved from the Internet: <URL:https://en.wikipedia.org/w/index.php?title=Apache_Maven&oldid=1105050769#>, [retrieved on… [cited by applicant]
Anonymous: “Guide to naming conventions on groupld, artifactld, and version”, , Aug. 9, 2022 (Aug. 9, 2022), pp. 1-1, XP093071184, Retrieved from the Internet: <URL: https://web.archive.org/web/20220809183500/https://ma… [cited by applicant]
Anonymous: “Java class file—Wikipedia”, Mar. 3, 2019 (Mar. 3, 2019), pp. 1-7, XP055844233, Retrieved from the Internet: <URL:https://web.archive.org/web/20190303180021/https://en.wikipedia.org/wiki/Java_class_file>, [re… [cited by applicant]