From 444fb820b3f24545d1eb13bb1e861163da96bd79 Mon Sep 17 00:00:00 2001 From: yma Date: Thu, 4 Jul 2024 14:43:53 +0800 Subject: [PATCH] Fix the Illegal character encoder issue for repo name --- .../indy/client/core/module/IndyStoresClientModule.java | 9 +++++---- .../org/commonjava/indy/client/core/util/UrlUtils.java | 7 +++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyStoresClientModule.java b/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyStoresClientModule.java index 911e2c6..3b71e59 100644 --- a/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyStoresClientModule.java +++ b/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyStoresClientModule.java @@ -29,6 +29,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.commonjava.indy.client.core.util.UrlUtils.encode; import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY; public class IndyStoresClientModule @@ -59,7 +60,7 @@ public boolean exists( final StoreType type, final String name ) public boolean exists( final StoreKey key ) throws IndyClientException { - return http.exists( UrlUtils.buildUrl( STORE_BASEPATH, key.getPackageType(), key.getType().singularEndpointName(), key.getName() ) ); + return http.exists( UrlUtils.buildUrl( STORE_BASEPATH, key.getPackageType(), key.getType().singularEndpointName(), encode( key.getName() ) ) ); } @Deprecated @@ -72,7 +73,7 @@ public void delete( final StoreType type, final String name, final String change public void delete( final StoreKey key, final String changelog ) throws IndyClientException { - http.deleteWithChangelog( UrlUtils.buildUrl( STORE_BASEPATH, key.getPackageType(), key.getType().singularEndpointName(), key.getName() ), changelog ); + http.deleteWithChangelog( UrlUtils.buildUrl( STORE_BASEPATH, key.getPackageType(), key.getType().singularEndpointName(), encode( key.getName() ) ), changelog ); } public void delete( final StoreKey key, final String changelog, final boolean deleteContent ) @@ -80,7 +81,7 @@ public void delete( final StoreKey key, final String changelog, final boolean de { http.deleteWithChangelog( UrlUtils.buildUrl( STORE_BASEPATH, key.getPackageType(), key.getType().singularEndpointName(), - key.getName(), deleteContent ? "?deleteContent=true" : "" ), changelog ); + encode( key.getName() ), deleteContent ? "?deleteContent=true" : "" ), changelog ); } public boolean update( final ArtifactStore store, final String changelog ) @@ -102,7 +103,7 @@ public T load( StoreType type, String name, final Clas public T load( StoreKey key, final Class cls ) throws IndyClientException { - return http.get( UrlUtils.buildUrl( STORE_BASEPATH, key.getPackageType(), key.getType().singularEndpointName(), key.getName() ), cls ); + return http.get( UrlUtils.buildUrl( STORE_BASEPATH, key.getPackageType(), key.getType().singularEndpointName(), encode( key.getName() ) ), cls ); } public StoreListingDTO listHostedRepositories() diff --git a/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java b/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java index 68b496f..cab60e6 100644 --- a/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java +++ b/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java @@ -15,9 +15,12 @@ */ package org.commonjava.indy.client.core.util; +import org.commonjava.indy.client.core.IndyClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -193,4 +196,8 @@ public static String normalizePath( final String... path ) return sb.toString(); } + public static String encode( String value ) + { + return URLEncoder.encode( value, StandardCharsets.UTF_8 ); + } }