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() + ")." );