You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2016/05/01 12:56:43 UTC
[41/50] [abbrv] maven-aether git commit: Polished code
Polished code
Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/ed23cf80
Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/ed23cf80
Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/ed23cf80
Branch: refs/heads/master
Commit: ed23cf809cb2afb3f3e04863ff0d8050250b7126
Parents: 6ef4a91
Author: Benjamin Bentmann <be...@sonatype.com>
Authored: Sat Nov 1 17:02:39 2014 +0100
Committer: Benjamin Bentmann <be...@sonatype.com>
Committed: Sat Nov 1 17:02:39 2014 +0100
----------------------------------------------------------------------
.../impl/DefaultRemoteRepositoryManager.java | 50 ++++++++++++++------
1 file changed, 36 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/ed23cf80/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
index fa560a9..8a54d62 100644
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
+++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
@@ -11,10 +11,9 @@
package org.eclipse.aether.internal.impl;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.ListIterator;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import javax.inject.Inject;
import javax.inject.Named;
@@ -45,8 +44,38 @@ public class DefaultRemoteRepositoryManager
implements RemoteRepositoryManager, Service
{
- private static final String CACHE_KEY_LOGGED_MIRRORS = DefaultRemoteRepositoryManager.class.getName()
- + "$LoggedMirrors";
+ private static final class LoggedMirror
+ {
+
+ private final Object[] keys;
+
+ public LoggedMirror( RemoteRepository original, RemoteRepository mirror )
+ {
+ keys = new Object[] { mirror.getId(), mirror.getUrl(), original.getId(), original.getUrl() };
+ }
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( this == obj )
+ {
+ return true;
+ }
+ else if ( !( obj instanceof LoggedMirror ) )
+ {
+ return false;
+ }
+ LoggedMirror that = (LoggedMirror) obj;
+ return Arrays.equals( keys, that.keys );
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return Arrays.hashCode( keys );
+ }
+
+ }
private Logger logger = NullLoggerFactory.LOGGER;
@@ -193,19 +222,12 @@ public class DefaultRemoteRepositoryManager
RepositoryCache cache = session.getCache();
if ( cache != null )
{
- Object logged = cache.get( session, CACHE_KEY_LOGGED_MIRRORS );
- if ( !( logged instanceof ConcurrentMap ) )
- {
- logged = new ConcurrentHashMap<Object, Object>();
- cache.put( session, CACHE_KEY_LOGGED_MIRRORS, logged );
- }
- @SuppressWarnings( "unchecked" )
- ConcurrentMap<Object, Object> map = (ConcurrentMap<Object, Object>) logged;
- String key = mirror.getId() + '\t' + mirror.getUrl() + '\t' + original.getId() + '\t' + original.getUrl();
- if ( map.put( key, Boolean.TRUE ) != null )
+ Object key = new LoggedMirror( original, mirror );
+ if ( cache.get( session, key ) != null )
{
return;
}
+ cache.put( session, key, Boolean.TRUE );
}
logger.debug( "Using mirror " + mirror.getId() + " (" + mirror.getUrl() + ") for " + original.getId() + " ("
+ original.getUrl() + ")." );