Skip to content

Commit

Permalink
Fix after refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
another-rex committed Oct 22, 2024
1 parent 29ad35f commit c92bc3e
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 9 deletions.
28 changes: 21 additions & 7 deletions internal/lockfilescalibr/language/java/pomxmlnet/extractor.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,15 @@ func (e Extractor) Extract(ctx context.Context, input *filesystem.ScanInput) ([]
if err := datasource.NewMavenDecoder(input.Reader).Decode(&project); err != nil {
return nil, fmt.Errorf("could not extract from %s: %w", input.Path, err)
}
// Empty JDK and ActivationOS indicates merging the default profiles.
if err := project.MergeProfiles("", maven.ActivationOS{}); err != nil {
return nil, fmt.Errorf("failed to merge profiles: %w", err)
}
for _, repo := range project.Repositories {
if err := e.MavenRegistryAPIClient.AddRegistry(string(repo.URL)); err != nil {
return nil, fmt.Errorf("failed to add registry %s: %w", repo.URL, err)
}
}
// Merging parents data by parsing local parent pom.xml or fetching from upstream.
if err := mavenutil.MergeParents(ctx, e.MavenRegistryAPIClient, &project, project.Parent, 1, input.Path, true); err != nil {
return nil, fmt.Errorf("failed to merge parents: %w", err)
Expand All @@ -63,15 +72,19 @@ func (e Extractor) Extract(ctx context.Context, input *filesystem.ScanInput) ([]
// - import dependency management
// - fill in missing dependency version requirement
project.ProcessDependencies(func(groupID, artifactID, version maven.String) (maven.DependencyManagement, error) {
root := maven.Parent{ProjectKey: maven.ProjectKey{GroupID: groupID, ArtifactID: artifactID, Version: version}}
var result maven.Project
if err := mavenutil.MergeParents(ctx, e.MavenRegistryAPIClient, &result, root, 0, input.Path, false); err != nil {
return maven.DependencyManagement{}, err
}

return result.DependencyManagement, nil
return mavenutil.GetDependencyManagement(ctx, e.MavenRegistryAPIClient, groupID, artifactID, version)
})

if registries := e.MavenRegistryAPIClient.GetRegistries(); len(registries) > 0 {
clientRegs := make([]client.Registry, len(registries))
for i, reg := range registries {
clientRegs[i] = client.Registry{URL: reg}
}
if err := e.DependencyClient.AddRegistries(clientRegs); err != nil {
return nil, err
}
}

overrideClient := client.NewOverrideClient(e.DependencyClient)
resolver := mavenresolve.NewResolver(overrideClient)

Expand Down Expand Up @@ -114,6 +127,7 @@ func (e Extractor) Extract(ctx context.Context, input *filesystem.ScanInput) ([]
}
overrideClient.AddVersion(root, reqs)

client.PreFetch(ctx, overrideClient, reqs, input.Path)
g, err := resolver.Resolve(ctx, root.VersionKey)
if err != nil {
return nil, fmt.Errorf("failed resolving %v: %w", root, err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,8 @@ func TestExtractor_Extract(t *testing.T) {

resolutionClient := clienttest.NewMockResolutionClient(t, "testdata/universe/basic-universe.yaml")
extr := pomxmlnet.Extractor{
DependencyClient: resolutionClient,
DependencyClient: resolutionClient,
MavenRegistryAPIClient: &datasource.MavenRegistryAPIClient{},
}

scanInput := extracttest.GenerateScanInputMock(t, tt.InputConfig)
Expand Down Expand Up @@ -339,10 +340,15 @@ func TestExtractor_Extract_WithMockServer(t *testing.T) {
</project>
`))

apiClient, err := datasource.NewMavenRegistryAPIClient(srv.URL)
if err != nil {
t.Fatalf("%v", err)
}

resolutionClient := clienttest.NewMockResolutionClient(t, "testdata/universe/basic-universe.yaml")
extr := pomxmlnet.Extractor{
DependencyClient: resolutionClient,
MavenRegistryAPIClient: datasource.NewMavenRegistryAPIClient(srv.URL),
MavenRegistryAPIClient: apiClient,
}

scanInput := extracttest.GenerateScanInputMock(t, tt.InputConfig)
Expand Down

0 comments on commit c92bc3e

Please sign in to comment.