You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2019/02/06 09:08:30 UTC

[maven] branch MNG-6571 created (now 23861e6)

This is an automated email from the ASF dual-hosted git repository.

hboutemy pushed a change to branch MNG-6571
in repository https://gitbox.apache.org/repos/asf/maven.git.


      at 23861e6  [MNG-6571] separate caches for create from spec and version

This branch includes the following new commits:

     new 23861e6  [MNG-6571] separate caches for create from spec and version

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven] 01/01: [MNG-6571] separate caches for create from spec and version

Posted by hb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hboutemy pushed a commit to branch MNG-6571
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 23861e69c197dd391c69fb3808e5ff6d2e07e444
Author: Hervé Boutemy <hb...@apache.org>
AuthorDate: Wed Feb 6 09:56:33 2019 +0100

    [MNG-6571] separate caches for create from spec and version
    
    test the little differences between the 2
---
 .../maven/artifact/versioning/VersionRange.java       | 12 ++++++++----
 .../maven/artifact/versioning/VersionRangeTest.java   | 19 +++++++++++++++++++
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
index 5d7b254..c37eabb 100644
--- a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
@@ -35,9 +35,12 @@ import org.apache.maven.artifact.Artifact;
  */
 public class VersionRange
 {
-    private static final Map<String, VersionRange> CACHE =
+    private static final Map<String, VersionRange> CACHE_SPEC =
         Collections.<String, VersionRange>synchronizedMap( new WeakHashMap<String, VersionRange>() );
 
+    private static final Map<String, VersionRange> CACHE_VERSION =
+                    Collections.<String, VersionRange>synchronizedMap( new WeakHashMap<String, VersionRange>() );
+
     private final ArtifactVersion recommendedVersion;
 
     private final List<Restriction> restrictions;
@@ -107,7 +110,7 @@ public class VersionRange
             return null;
         }
 
-        VersionRange cached = CACHE.get( spec );
+        VersionRange cached = CACHE_SPEC.get( spec );
         if ( cached != null )
         {
             return cached;
@@ -176,7 +179,7 @@ public class VersionRange
         }
 
         cached = new VersionRange( version, restrictions );
-        CACHE.put( spec, cached );
+        CACHE_SPEC.put( spec, cached );
         return cached;
     }
 
@@ -236,11 +239,12 @@ public class VersionRange
 
     public static VersionRange createFromVersion( String version )
     {
-        VersionRange cached = CACHE.get( version );
+        VersionRange cached = CACHE_VERSION.get( version );
         if ( cached == null )
         {
             List<Restriction> restrictions = Collections.emptyList();
             cached = new VersionRange( new DefaultArtifactVersion( version ), restrictions );
+            CACHE_VERSION.put( version, cached );
         }
         return cached;
     }
diff --git a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
index dc8d3d5..da5d758 100644
--- a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
+++ b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
@@ -727,4 +727,23 @@ public class VersionRangeTest
     {
         // assertTrue( new DefaultArtifactVersion( "1.0-alpha10" ).compareTo( new DefaultArtifactVersion( "1.0-alpha1" ) ) > 0 );
     }
+
+    public void testCache()
+        throws InvalidVersionSpecificationException
+    {
+        VersionRange range = VersionRange.createFromVersionSpec( "[1.0,1.2]" );
+        assertTrue( range == VersionRange.createFromVersionSpec( "[1.0,1.2]" ) ); // same instance from spec cache
+
+        VersionRange spec = VersionRange.createFromVersionSpec( "1.0" );
+        assertTrue( spec == VersionRange.createFromVersionSpec( "1.0" ) ); // same instance from spec cache
+        List<Restriction> restrictions = spec.getRestrictions();
+        assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
+
+        VersionRange version = VersionRange.createFromVersion( "1.0" );
+        assertTrue( version == VersionRange.createFromVersion( "1.0" ) ); // same instance from version cache
+        restrictions = version.getRestrictions();
+        assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
+
+        assertFalse( "check !VersionRange.createFromVersionSpec(x).equals(VersionRange.createFromVersion(x))", spec.equals( version ) );
+    }
 }