From d62b58e5ba06a0872941378f353c82f8741971ac Mon Sep 17 00:00:00 2001 From: jackie_wu Date: Fri, 16 Jul 2021 09:40:58 +0800 Subject: [PATCH] add support for blocked repository --- add-support-for-blocked-repository.patch | 184 +++++++++++++++++++++++ maven-resolver.spec | 6 +- 2 files changed, 189 insertions(+), 1 deletion(-) create mode 100644 add-support-for-blocked-repository.patch diff --git a/add-support-for-blocked-repository.patch b/add-support-for-blocked-repository.patch new file mode 100644 index 0000000..c1b2ee2 --- /dev/null +++ b/add-support-for-blocked-repository.patch @@ -0,0 +1,184 @@ +From 514cec19743c4f441f0137cd6d035422a046e6a1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= +Date: Sun, 7 Mar 2021 08:48:37 +0100 +Subject: [PATCH] [MRESOLVER-166] add support for blocked repository/mirror + +--- + .../aether/repository/RemoteRepository.java | 40 ++++++++++++++++++- + .../repository/DefaultMirrorSelector.java | 21 ++++++++-- + 2 files changed, 55 insertions(+), 6 deletions(-) + +diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java +index fd5c480..52fc894 100644 +--- a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java ++++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java +@@ -59,6 +59,8 @@ public final class RemoteRepository + + private final boolean repositoryManager; + ++ private boolean blocked; ++ + RemoteRepository( Builder builder ) + { + if ( builder.prototype != null ) +@@ -76,6 +78,7 @@ public final class RemoteRepository + repositoryManager = + ( builder.delta & Builder.REPOMAN ) != 0 ? builder.repositoryManager + : builder.prototype.repositoryManager; ++ blocked = ( builder.delta & Builder.BLOCKED ) != 0 ? builder.blocked : builder.prototype.blocked; + mirroredRepositories = + ( builder.delta & Builder.MIRRORED ) != 0 ? copy( builder.mirroredRepositories ) + : builder.prototype.mirroredRepositories; +@@ -90,7 +93,8 @@ public final class RemoteRepository + proxy = builder.proxy; + authentication = builder.authentication; + repositoryManager = builder.repositoryManager; +- mirroredRepositories = copy( builder.mirroredRepositories ); ++ blocked = builder.blocked; ++ mirroredRepositories = copy( builder.mirroredRepositories ); + } + + Matcher m = URL_PATTERN.matcher( url ); +@@ -207,6 +211,16 @@ public final class RemoteRepository + return repositoryManager; + } + ++ /** ++ * Indicates whether this repository is blocked against any download request. ++ * ++ * @return {@code true} if this repository is blocked against any download request, {@code false} otherwise. ++ */ ++ public boolean isBlocked() ++ { ++ return blocked; ++ } ++ + @Override + public String toString() + { +@@ -235,6 +249,11 @@ public final class RemoteRepository + { + buffer.append( ", managed" ); + } ++ if ( isBlocked() ) ++ { ++ buffer.append( ", blocked" ); ++ ++ } + buffer.append( ")" ); + return buffer.toString(); + } +@@ -294,7 +313,7 @@ public final class RemoteRepository + private static final RepositoryPolicy DEFAULT_POLICY = new RepositoryPolicy(); + + static final int ID = 0x0001, TYPE = 0x0002, URL = 0x0004, RELEASES = 0x0008, SNAPSHOTS = 0x0010, +- PROXY = 0x0020, AUTH = 0x0040, MIRRORED = 0x0080, REPOMAN = 0x0100; ++ PROXY = 0x0020, AUTH = 0x0040, MIRRORED = 0x0080, REPOMAN = 0x0100, BLOCKED = 0x0200; + + int delta; + +@@ -318,6 +337,8 @@ public final class RemoteRepository + + boolean repositoryManager; + ++ boolean blocked; ++ + /** + * Creates a new repository builder. + * +@@ -574,6 +595,21 @@ public final class RemoteRepository + return this; + } + ++ /** ++ * Marks the repository as blocked or not. ++ * ++ * @param blocked {@code true} if the repository should not be allowed to get any request. ++ * @return This builder for chaining, never {@code null}. ++ */ ++ public Builder setBlocked( boolean blocked ) ++ { ++ this.blocked = blocked; ++ if ( prototype != null ) ++ { ++ delta( BLOCKED, this.blocked, prototype.isBlocked() ); ++ } ++ return this; ++ } + } + + } +diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java +index c123b47..f493708 100644 +--- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java ++++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java +@@ -39,6 +39,13 @@ public final class DefaultMirrorSelector + + private final List mirrors = new ArrayList(); + ++ @Deprecated ++ public DefaultMirrorSelector add( String id, String url, String type, boolean repositoryManager, ++ String mirrorOfIds, String mirrorOfTypes ) ++ { ++ return add( id, url, type, repositoryManager, false, mirrorOfIds, mirrorOfTypes ); ++ } ++ + /** + * Adds the specified mirror to this selector. + * +@@ -46,6 +53,7 @@ public final class DefaultMirrorSelector + * @param url The URL of the mirror, must not be {@code null}. + * @param type The content type of the mirror, must not be {@code null}. + * @param repositoryManager A flag whether the mirror is a repository manager or a simple server. ++ * @param blocked A flag whether the mirror blocks any download request. + * @param mirrorOfIds The identifier(s) of remote repositories to mirror, must not be {@code null}. Multiple + * identifiers can be separated by comma and additionally the wildcards "*" and "external:*" can be used + * to match all (external) repositories, prefixing a repo id with an exclamation mark allows to express +@@ -55,10 +63,10 @@ public final class DefaultMirrorSelector + * wildcard "*" and the "!" negation syntax are supported. For example "*,!p2". + * @return This selector for chaining, never {@code null}. + */ +- public DefaultMirrorSelector add( String id, String url, String type, boolean repositoryManager, ++ public DefaultMirrorSelector add( String id, String url, String type, boolean repositoryManager, boolean blocked, + String mirrorOfIds, String mirrorOfTypes ) + { +- mirrors.add( new MirrorDef( id, url, type, repositoryManager, mirrorOfIds, mirrorOfTypes ) ); ++ mirrors.add( new MirrorDef( id, url, type, repositoryManager, blocked, mirrorOfIds, mirrorOfTypes ) ); + + return this; + } +@@ -77,6 +85,8 @@ public final class DefaultMirrorSelector + + builder.setRepositoryManager( mirror.repositoryManager ); + ++ builder.setBlocked( mirror.blocked ); ++ + if ( mirror.type != null && mirror.type.length() > 0 ) + { + builder.setContentType( mirror.type ); +@@ -253,17 +263,20 @@ public final class DefaultMirrorSelector + + final boolean repositoryManager; + ++ final boolean blocked; ++ + final String mirrorOfIds; + + final String mirrorOfTypes; + +- MirrorDef( String id, String url, String type, boolean repositoryManager, String mirrorOfIds, +- String mirrorOfTypes ) ++ MirrorDef( String id, String url, String type, boolean repositoryManager, boolean blocked, String mirrorOfIds, ++ String mirrorOfTypes ) + { + this.id = id; + this.url = url; + this.type = type; + this.repositoryManager = repositoryManager; ++ this.blocked = blocked; + this.mirrorOfIds = mirrorOfIds; + this.mirrorOfTypes = mirrorOfTypes; + } +-- +2.23.0 + diff --git a/maven-resolver.spec b/maven-resolver.spec index 52f9a69..d30fd19 100644 --- a/maven-resolver.spec +++ b/maven-resolver.spec @@ -1,12 +1,13 @@ Name: maven-resolver Version: 1.1.1 -Release: 3 +Release: 4 Epoch: 1 License: ASL 2.0 Summary: Apache Maven Artifact Resolver library URL: http://maven.apache.org/resolver/ Source0: http://archive.apache.org/dist/maven/resolver/%{name}-%{version}-source-release.zip BuildArch: noarch +Patch0001: add-support-for-blocked-repository.patch BuildRequires: maven-local mvn(javax.inject:javax.inject) mvn(junit:junit) mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.httpcomponents:httpclient) mvn(org.apache.httpcomponents:httpcore) mvn(org.apache.maven:maven-parent:pom:) BuildRequires: mvn(org.apache.maven.wagon:wagon-provider-api) mvn(org.codehaus.plexus:plexus-classworlds) @@ -155,5 +156,8 @@ done %files help -f .mfiles-javadoc %changelog +* Fri Jul 16 2021 wutao - 1.1.1-4 +- add support for blocked repository + * Tue Dec 03 2019 gulining - 1.1.1-3 - Pakcage init