diff --git a/cdi-embedder/src/test/java/org/commonjava/maven/galley/embed/TestCDIProvider.java b/cdi-embedder/src/test/java/org/commonjava/maven/galley/embed/TestCDIProvider.java index 63fc867b5..dda6c5c3f 100644 --- a/cdi-embedder/src/test/java/org/commonjava/maven/galley/embed/TestCDIProvider.java +++ b/cdi-embedder/src/test/java/org/commonjava/maven/galley/embed/TestCDIProvider.java @@ -126,6 +126,12 @@ public List getAllowHttpJobTypes() { return new ArrayList<>(); } + + @Override + public List getEgressSites() + { + return new ArrayList<>(); + } }; @Inject diff --git a/pom.xml b/pom.xml index f326d659c..96712bd7c 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ 1.16 2.5 1.24 - 1.14 + 1.15-SNAPSHOT 9.4.7.Final 3.1.9.Final 4.0.20 diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java index 738ca11f0..92818c74b 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java @@ -122,7 +122,7 @@ public DownloadJob createDownloadJob( final ConcreteResource resource, final Tra { return new HttpDownload( getUrl( resource ), getHttpLocation( resource.getLocation(), download ), target, transferSizes, eventMetadata, http, mapper, metricRegistry, metricConfig, - proxySitesCache ); + globalProxyConfig.getEgressSites(), proxySitesCache ); } @Override @@ -165,7 +165,8 @@ public ListingJob createListingJob( final ConcreteResource resource, final Trans { return new HttpListing( getUrl( resource ), new ConcreteResource( getHttpLocation( resource.getLocation(), listing ), - resource.getPath() ), http, proxySitesCache ); + resource.getPath() ), http, globalProxyConfig.getEgressSites(), + proxySitesCache ); } private HttpLocation getHttpLocation( final Location repository, HttpJobType httpJobType ) @@ -189,7 +190,7 @@ public ExistenceJob createExistenceJob( final ConcreteResource resource, final T throws TransferException { return new HttpExistence( getUrl( resource ), getHttpLocation( resource.getLocation(), existence ), target, - http, mapper, proxySitesCache ); + http, mapper, globalProxyConfig.getEgressSites(), proxySitesCache ); } private String getUrl( final ConcreteResource resource ) diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/conf/GlobalProxyConfig.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/conf/GlobalProxyConfig.java index 42c0ce565..db35b2b39 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/conf/GlobalProxyConfig.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/conf/GlobalProxyConfig.java @@ -27,4 +27,6 @@ public interface GlobalProxyConfig String getUser(); List getAllowHttpJobTypes(); + + List getEgressSites(); } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java index 97d11ea49..a78dc8738 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java @@ -48,6 +48,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.List; import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan; @@ -73,14 +74,18 @@ public abstract class AbstractHttpJob protected boolean success; + private final List egressSites; + private final ProxySitesCache proxySitesCache; protected AbstractHttpJob( final String url, final HttpLocation location, final Http http, - ProxySitesCache proxySitesCache, final Integer... successStatuses ) + final List egressSites, ProxySitesCache proxySitesCache, + final Integer... successStatuses ) { this.url = url; this.location = location; this.http = http; + this.egressSites = egressSites; this.proxySitesCache = proxySitesCache; if ( successStatuses.length < 1 ) @@ -158,7 +163,7 @@ else if ( !doProxy ) // never do with proxy, retry with proxy { tries = 1; doProxy = true; - if ( proxySitesCache != null ) + if ( proxySitesCache != null && ( egressSites == null || !egressSites.contains( site ) ) ) { proxySitesCache.saveProxySite( site ); } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java index afba38dc7..d2758c21b 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java @@ -38,6 +38,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.List; import java.util.Map; import static org.apache.commons.io.IOUtils.closeQuietly; @@ -68,7 +69,7 @@ public HttpDownload( final String url, final HttpLocation location, final Transf final Map transferSizes, final EventMetadata eventMetadata, final Http http, final ObjectMapper mapper ) { - this( url, location, target, transferSizes, eventMetadata, http, mapper, true, null, null, null ); + this( url, location, target, transferSizes, eventMetadata, http, mapper, true, null, null, null, null ); } public HttpDownload( final String url, final HttpLocation location, final Transfer target, @@ -77,25 +78,27 @@ public HttpDownload( final String url, final HttpLocation location, final Transf final TransportMetricConfig transportMetricConfig ) { this( url, location, target, transferSizes, eventMetadata, http, mapper, true, metricRegistry, - transportMetricConfig, null ); + transportMetricConfig, null, null ); } public HttpDownload( final String url, final HttpLocation location, final Transfer target, final Map transferSizes, final EventMetadata eventMetadata, final Http http, final ObjectMapper mapper, final MetricRegistry metricRegistry, - final TransportMetricConfig transportMetricConfig, ProxySitesCache proxySitesCache ) + final TransportMetricConfig transportMetricConfig, final List egressSites, + ProxySitesCache proxySitesCache ) { this( url, location, target, transferSizes, eventMetadata, http, mapper, true, metricRegistry, - transportMetricConfig, proxySitesCache ); + transportMetricConfig, egressSites, proxySitesCache ); } public HttpDownload( final String url, final HttpLocation location, final Transfer target, final Map transferSizes, final EventMetadata eventMetadata, final Http http, final ObjectMapper mapper, final boolean deleteFilesOnPath, final MetricRegistry metricRegistry, final TransportMetricConfig transportMetricConfig, - ProxySitesCache proxySitesCache ) + final List egressSites, ProxySitesCache proxySitesCache ) { - super( url, location, http, proxySitesCache ); + + super( url, location, http, egressSites, proxySitesCache ); this.request = new HttpGet( url ); this.target = target; this.transferSizes = transferSizes; diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java index a2e2a26e2..7456a5e7d 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java @@ -24,6 +24,8 @@ import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.model.HttpLocation; +import java.util.List; + import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan; public final class HttpExistence @@ -38,13 +40,13 @@ public final class HttpExistence public HttpExistence( final String url, final HttpLocation location, final Transfer transfer, final Http http, final ObjectMapper mapper ) { - this( url, location, transfer, http, mapper, null ); + this( url, location, transfer, http, mapper, null, null ); } public HttpExistence( final String url, final HttpLocation location, final Transfer transfer, final Http http, - final ObjectMapper mapper, ProxySitesCache proxySitesCache ) + final ObjectMapper mapper, final List egressSites, ProxySitesCache proxySitesCache ) { - super( url, location, http, proxySitesCache ); + super( url, location, http, egressSites, proxySitesCache ); this.transfer = transfer; this.mapper = mapper; } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java index f02542286..e08c3f959 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java @@ -37,6 +37,7 @@ import java.nio.charset.Charset; import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; import static org.apache.commons.io.IOUtils.closeQuietly; @@ -60,13 +61,13 @@ public class HttpListing public HttpListing( final String url, final ConcreteResource resource, final Http http ) { - this( url, resource, http, null ); + this( url, resource, http, null, null ); } public HttpListing( final String url, final ConcreteResource resource, final Http http, - ProxySitesCache proxySitesCache ) + final List egressSites, ProxySitesCache proxySitesCache ) { - super( url, (HttpLocation) resource.getLocation(), http, proxySitesCache ); + super( url, (HttpLocation) resource.getLocation(), http, egressSites, proxySitesCache ); this.resource = resource; } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java index 7dbd87fb9..da282978d 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java @@ -20,13 +20,13 @@ import org.apache.http.entity.ContentType; import org.apache.http.entity.InputStreamEntity; import org.commonjava.maven.galley.TransferException; -import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.PublishJob; import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.model.HttpLocation; import org.commonjava.maven.galley.util.ContentTypeUtils; import java.io.InputStream; +import java.util.ArrayList; import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan; @@ -46,7 +46,7 @@ public final class HttpPublish public HttpPublish( final String url, final HttpLocation location, final InputStream stream, final long length, final String contentType, final Http http ) { - super( url, location, http, null, HttpStatus.SC_OK, HttpStatus.SC_CREATED ); + super( url, location, http, null, null, HttpStatus.SC_OK, HttpStatus.SC_CREATED ); this.stream = stream; this.length = length; this.contentType = contentType == null ? ContentTypeUtils.detectContent( url ) : contentType;