diff --git a/src/main/java/org/commonjava/indy/service/repository/controller/QueryController.java b/src/main/java/org/commonjava/indy/service/repository/controller/QueryController.java index 3a23909..6a12203 100644 --- a/src/main/java/org/commonjava/indy/service/repository/controller/QueryController.java +++ b/src/main/java/org/commonjava/indy/service/repository/controller/QueryController.java @@ -15,7 +15,7 @@ */ package org.commonjava.indy.service.repository.controller; -import org.apache.commons.lang3.StringUtils; +import static org.apache.commons.lang3.StringUtils.isNotBlank; import org.commonjava.indy.service.repository.data.ArtifactStoreQuery; import org.commonjava.indy.service.repository.data.StoreDataManager; import org.commonjava.indy.service.repository.exception.IndyDataException; @@ -34,6 +34,7 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -71,7 +72,7 @@ public List getAllArtifactStores( final String packageType, final throws IndyWorkflowException { List typesLs = new ArrayList<>(); - if ( StringUtils.isNotBlank( types ) ) + if ( isNotBlank( types ) ) { typesLs = Arrays.stream( types.split( "," ) ) .map( String::trim ) @@ -211,15 +212,25 @@ public String getAllRemoteRepositoryHosts() throws IndyDataException { final Set ret = new HashSet<>(); - storeManager.query().getAllRemoteRepositories(PKG_TYPE_MAVEN).forEach( r -> ret.add( r.getHost() ) ); - storeManager.query().getAllRemoteRepositories(PKG_TYPE_NPM).forEach( r -> ret.add( r.getHost() ) ); - storeManager.query().getAllRemoteRepositories(PKG_TYPE_GENERIC_HTTP).forEach( r -> ret.add( r.getHost() ) ); + storeManager.query().getAllRemoteRepositories(PKG_TYPE_MAVEN).forEach( r -> safelyAddHost( ret, r ) ); + storeManager.query().getAllRemoteRepositories(PKG_TYPE_NPM).forEach( r -> safelyAddHost( ret, r ) ); + storeManager.query().getAllRemoteRepositories(PKG_TYPE_GENERIC_HTTP).forEach( r -> safelyAddHost( ret, r ) ); final StringBuilder sb = new StringBuilder(); ret.stream().sorted().forEach( s -> sb.append(s).append(",")); return sb.toString(); } + private void safelyAddHost( Set hosts, RemoteRepository r ) + { + // getHost returns null if MalformedURLException occurs during parsing + String host = r.getHost(); + if ( isNotBlank( host ) ) + { + hosts.add( host ); + } + } + public List getAllHostedRepositories( final String packageType, final String enabled ) throws IndyWorkflowException { @@ -280,7 +291,7 @@ public EndpointViewListing getEndpointsListing( final String pkgType, final Stri try { stores = new ArrayList<>( storeManager.getAllArtifactStores() ); - if ( StringUtils.isNotBlank( pkgType ) && !"all".equals( pkgType ) && isValidPackageType( pkgType ) ) + if ( isNotBlank( pkgType ) && !"all".equals( pkgType ) && isValidPackageType( pkgType ) ) { stores = stores.stream() .filter( s -> pkgType.equals( s.getPackageType() ) ) @@ -321,7 +332,7 @@ public Map> getStoreKeysByPackageType( final String pkgType final Map> result = new HashMap<>(); stores = new ArrayList<>( storeManager.getAllArtifactStores() ); List items; - if ( StringUtils.isNotBlank( pkgType ) && !"all".equals( pkgType ) && isValidPackageType( pkgType ) ) + if ( isNotBlank( pkgType ) && !"all".equals( pkgType ) && isValidPackageType( pkgType ) ) { items = stores.stream() .filter( s -> pkgType.equals( s.getPackageType() ) )