From 3a614ea9e22792a789244e06bb6e9bd99611c1f6 Mon Sep 17 00:00:00 2001 From: shokakucarrier Date: Thu, 12 Dec 2024 14:52:27 +0800 Subject: [PATCH] compare tarball string as well in the generation phase to prevent bad tarball url (#2487) * check tarball string as well in the generation phase * correct tarball path compare * update to preserve Dist content while update it's path only * add detection of null in dist * add setter --- .../pkg/npm/content/PackageMetadataGenerator.java | 12 ++++++++++-- .../java/org/commonjava/indy/pkg/npm/model/Dist.java | 7 ++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java index f490a103a7..f8289bf14b 100644 --- a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java +++ b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java @@ -321,11 +321,19 @@ private boolean writePackageMetadata( List firstLevelFiles, Artif } // Generate tarball url if missing + String tarball = "http://indy/" + packagePath.getTarPath(); // here we use mock host. indy will amend it with the right hostname if ( versionMetadata.getDist() == null ) { - String tarball = "http://indy/" + packagePath.getTarPath(); // here we use mock host. indy will amend it with the right hostname //logger.debug( "Generate dist tarball: {}", tarball ); - versionMetadata.setDist( new Dist( tarball ) ); + versionMetadata.setDist( new Dist( tarball ) ); + } else { + // Detect bad tarball and replace with correct one + if ( versionMetadata.getDist().getTarball() == null || !versionMetadata.getDist().getTarball().endsWith(packagePath.getTarPath()) ) + { + Dist dist = versionMetadata.getDist(); + dist.setTarball( tarball ); + versionMetadata.setDist( dist ); + } } } catch ( IOException e ) diff --git a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java index cf0ae0c680..4d70edbfce 100644 --- a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java +++ b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java @@ -25,7 +25,7 @@ public class Dist private final String shasum; - private final String tarball; + private String tarball; private final String integrity; @@ -69,6 +69,11 @@ public String getTarball() return tarball; } + public void setTarball( String tarball ) + { + this.tarball = tarball; + } + public String getIntegrity() { return integrity;